2016-12-27 8 views
2

, поэтому у меня есть 2 контроллера представлений, которые теперь стали частями TabBarController. Я просто проходил переменную «selectedPack» от В.- А до В.- В по:Передайте данные из ViewController в Viewcontroller, который теперь является частью TabBarController

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
    let transportJourneyViewController = storyBoard.instantiateViewController(withIdentifier: "JourneyViewController") as! JourneyViewController 
     transportJourneyViewController.selectedPack = self.packArray[indexPath.item].packID 
self.present(transportJourneyViewController, animated:true, completion:nil) 

однако теперь, что Vc B или JourneyViewController является частью TabBarController мне нужно изменить к нему что-то вроде:

let tbc = self.storyboard!.instantiateViewController(withIdentifier: "MyTabController") as! UITabBarController 
    tbc.selectedIndex = 1 
self.present(tbc, animated: true, completion: nil) 

Проблема, с которой я сталкиваюсь, пытается передать данные, которые он имеет переменную «selectedPack», как показано в первом блоке кода, потому что эта переменная не существует в «tbc.selectedIndex = 1», она существует в «JourneyViewController». Я запутался, потому что я думаю, что, хотя это часть элемента управления tabbar, когда вы меняетесь, вы меняетесь на этот диспетчер представлений, что, очевидно, не так, хотя это то, что вы видите.

+0

Nicely объясняется здесь https://makeapppie.com/2015/02/04/swift-swift-tutorials-passing-data-in-tab-bar-controllers/SubClass Tabbar. –

ответ

2

Вы можете попробовать ниже способом

let tbc = self.storyboard!.instantiateViewController(withIdentifier: "MyTabController") as! UITabBarController 
     tbc.selectedIndex = 1 

     // Suppose your viewcontroller is at tab bar first index. 
     let transportJourneyViewControllerOBJ = tbc.viewControllers?[0] as! ViewController 
     transportJourneyViewControllerOBJ.strValue = "Testvalue" 
     self.present(tbc, animated: true, completion: nil) 
+0

, что было легко исправить – Pippo