在选项卡栏中的2个视图控制器之间传递字符串

时间:2017-02-10 12:44:00

标签: swift

我有一个使用Firebase的Swift应用程序。在应用程序的这一部分,有两个VC位于标签栏控制器中,然后是导航控制器。所以TBC - > NavC - > VC。

我需要从主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中创建了一个全局变量,但我认为这是不赞成的。

传输该字符串的最佳方法是什么? 谢谢。

1 个答案:

答案 0 :(得分: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