Создание перехода из программно созданного табличного представления

Я новичок в разработке под 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: необходимо:))

Другие вопросы по тегам