Создание перехода из программно созданного табличного представления
Я новичок в разработке под iOS, после того как я закончил некоторые базовые учебные пособия и книги для начинающих, я посмотрел примеры программирования под iOS. После этого я нашел это.
https://github.com/uacaps/PageMenu
Я скачал примеры, но у меня проблема. Я использую PageMenuDemoTabbar ( https://github.com/uacaps/PageMenu/tree/master/Demos/Demo%204/PageMenuDemoTabbar) пример. И я хочу добавить segues, когда пользователь нажал на ячейку tableview. Но здесь есть проблема. Поскольку табличные представления созданы программно, я не могу добавлять сегменты из раскадровки.
Как я могу это сделать?
Спасибо за помощь.
1 ответ
Если вы хотите перейти к другому контроллеру представления из раскадровки, просто добавьте StoryboardID к этому контроллеру представления (как у меня RootViewController с StoryboardID RootVC):
затем создайте открытое свойство для данных, которые вы хотите передать контроллеру представления (т.е. @property (nonatomic, strong) NSDictionary *propertyYouSet
). А затем добавьте следующий код в свой -tableView:didSelectItemAtIndexPath:
Метод делегата UITableView:
YourViewController *yourViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"YourViewControllerStoryboardID"];
yourViewController.propertyYouSet = @{ 'someKey': 'someValueYouWantToPass' };
[self.navigationController pushViewController:yourViewController animated:YES];
Таким образом, вы все еще можете использовать контроллеры Storyboard View без необходимости перехода.
Swift версия
Ой, только что заметил swift
тег. Итак, вот тот же код в Swift:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("yourViewControllerStoryboardID") as! UIViewController
vc.setYourProperty(someDictionaryHere) // I'm not so sure about this, I'm new in Swift too :)
self.presentViewController(vc, animated: true, completion: nil)
}
затем переопределите этот метод в вашем контроллере представления:
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
(потому что в Swift -initWithCoder:
необходимо:))