2016-06-13 4 views
0

В настоящее время у меня есть раскадровка с табличным представлением с моими данными, и я считаю, что правильно передаю эти данные с помощью функций didSelectRowAtIndexPath и readyForSegue.
Моя проблема заключается в том, что когда я выбираю определенную ячейку, мой прилив становится неправильным, потому что у меня есть контроллер панели вкладок, содержащий мои представления, которые будут отображаться с этой передаваемой информацией.
Я хочу, чтобы мой бросок быть:Swift Подготовьтесь к segue, прерванному TabBarController

let destination = segue.destinationViewController as! DownloadViewController 

Но я получаю сообщение об ошибке, потому что переход происходит в контроллер бара вкладок первым. Эта ошибка имеет для меня смысл, но я не уверен, как обойти ее, не избавившись от контроллера панели вкладок. Вот фотография моего рассказа, чтобы показать общий поток.

http://imgur.com/7gFKKIZ

Любая помощь приветствуется.

ответ

0

UITabBarController имеет массив, который содержит свой подключенный viewController, для доступа, например. первая попытка

let destination = (segue.destinationViewController as! UITabBarController).viewControllers?.first as! DownloadViewController 
+0

Спасибо, это то, что я искал! – John511

0

Вместо использования segue вы можете использовать модальную презентацию нужной первой вкладки для отображения, если она работает для вас.

let displayFirstVC = storyboard.instantiateViewControllerWithIdentifier("newVC") as! UIViewController 
self.presentViewController(displayFirstVC , animated: true, completion: nil) 

Когда вы instantiateViewControllerWithIdentifier, вы должны создать раскадровку имя для FirstViewController с именем newVC.

Вам также необходимо будет заменить UIViewController именем, которое вы указали для своего контроллера вида.

tp://i.stack.imgur.com/6MMsy.png

Подробнее здесь. Instantiate and Present a viewController in Swift

+0

Есть ли способ передавать информацию этим методом? Как и то, что готовит ForSegue? – John511