Передача данных между контроллером навигации и контроллером вкладок
Если раскадровка содержит представление в контроллере навигации, которое переходит к другому контроллеру представления, уже встроенному в контроллер вкладок, как можно передать переменную из начального представления в первое представление в контроллере вкладок?
В частности, я хочу передать переменную, используя основной performSegueWithIdentifier
подход. Подключив первый контроллер представления (встроенный в контроллер навигации) к контроллеру вкладок, я не могу передать данные. Однако, если соединение установлено непосредственно между первым контроллером представления и контроллером представления назначения, назначение больше не внедрено во вкладке.
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "internalItemDetail" {
let destination = segue.destinationViewController as InternalInventoryDetail
let index = itemTable.indexPathForSelectedRow()!
destination.fmRecordId = sectionedItemArray[index.section][index.row]["fmRecordId"] as String!
}
}
Чтобы было ясно, цель состоит в том, чтобы передать переменную из контроллера навигации в другое представление, которое встроено в контроллер вкладок, в то время как пользовательский интерфейс будет отображать контроллер вкладок внутри контроллера навигации.
1 ответ
UIStoryBoardSegue имеет свойство destinationViewController, которое даст вам целевой контроллер представления - в вашем случае UITabBarController (если я правильно читаю ваш вопрос). Вам нужно будет привести его к UITabBarController и оттуда вы можете получить доступ к его подпредставлениям. (Код в цели c, но его легко конвертировать, я просто никогда не использовал swift)
UITabBarController *tabControl = (UITabBarController *)segue.destinationViewController;
MyViewController *mv = (MyViewController *)tabControl.viewControllers[0];// whatever index you want