Передача данных между контроллером навигации и контроллером вкладок

Если раскадровка содержит представление в контроллере навигации, которое переходит к другому контроллеру представления, уже встроенному в контроллер вкладок, как можно передать переменную из начального представления в первое представление в контроллере вкладок?

В частности, я хочу передать переменную, используя основной 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
Другие вопросы по тегам