2016-11-09 2 views
0

Попробуйте это Passing data with segue through navigationController, но мне нужен еще один шаг, прежде чем UITabBarControllerПередачи данных с помощью Segue TabBarControllerController

enter image description here

ViewController-> UITabBarController-> UINavigationController-> RestaurantTableViewController

Пункта назначения диспетчером просмотра является UITabBarController. Как я могу получить реальное назначение RestaurantTableViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == segueIdentifire() { 
      let dcTabBar = segue.destination as! UITabBarController 
      let dcNabBar = //i don't know what should i write here? 
      let dc = dcNabBar.topViewController as! RestaurantTableViewController 
      dc.dcTitle = "Restaurant" 

     } 
    } 

ответ

2

Вы можете получить вк с dcTabBar.viewControllers?[0] (заменить 0 с индексом) или просто dcTabBar.selectedViewController, если его первый элемент TabBar

+0

Вы могли бы написать ** подготовить ** метод? –

+0

Это для той части, которую вы сказали, что не знаете, что вы должны написать, другая часть кажется правильной уже – Tj3n

+0

let dc = dcNabBar.topViewController as! RestaurantTableViewController this line error throw Значение типа 'UIViewController?' не имеет члена 'topViewController' –

0

Смотрите, если он работает для вас:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "toTabController" { 
     var tabBarC : UITabBarController = segue.destinationViewController as UITabBarController 
     var desView: RestaurantTableViewController = tabBarC.viewControllers?.first as RestaurantTableViewController 

     var caseIndex = overviewTableView!.indexPathForSelectedRow()!.row 
     var selectedCase = self.cases[caseIndex] 

     desView.caseitem = selectedCase 
     } 
    }