2017-02-10 42 views
0

我有一个使用Firebase的Swift应用程序。在这部分应用程序中,有2个VC在Tab Bar Controller中,然后是导航控制器。所以TBC - > NavC - > VC。在标签栏中的2个视图控制器之间传递字符串

我需要从主TBC VC传递一个字符串。这是一张卡片的Firebase ID。使用该ID,我可以访问该卡节点上的所有孩子,但没有它我无法访问。

我一直在使用prepareForSegue试过..

let tabVc = segue.destination as! UITabBarController 
let navVc = tabVc.viewControllers!.first as! UINavigationController 
let destinationVC = navVc.viewControllers.first as! MonthlyNutViewController 

destinationVC.cardID = cardID 
print(cardID) 

我已经设置了一个断点,并没有击中。

我已经看到了一些旧的SO帖子,提示我在appDelegate中创建了一个全局变量,但我认为这是令人不悦的。

什么是我最好的方式来传输该字符串? 谢谢。

回答

0

如果它只是一个变量,我会去appDelegate。您也可以选择创建单例来保存更复杂的数据模型。

只需声明变量在appDelegate

class AppDelegate: UIResponder, UIApplicationDelegate { 
    var myFirebaseString : String? 

,然后从ViewControllers

访问
let appDelegate = UIApplication.shared.delegate as! AppDelegate 
appDelegate.myFirebaseString = "key" 

,然后在第二个控制器

let appDelegate = UIApplication.shared.delegate as! AppDelegate 
ley localKey = appDelegate.myFirebaseString 
相关问题