2017-05-07 50 views

回答

3

你有两个选择,第二个选项是更好的设计。

第一种选择:(你想要的)

我不知道你的视图控制器的结构,所以让我假设你有一个根视图控制器,你可以从AppDelegate通过得到它:

rootVC = self.window?.rootViewController 

如果你想从根视图控制器呈现视图控制器(如许多应用程序,所提出的视图控制器是一个标签栏控制器):

guard let tabBarController = rootVC.presentedViewController as? TabBarController else { 
     return 
} 

一旦你的标签栏控制器,你可以找到视图控制器的阵列中的视图控制器:

tabBarController.viewControllers 

从本质上讲,我想说的是,你必须通过你的视图控制器开始跳从根到达你想要的控制器,然后从那里获取变量。这很容易出错,一般不推荐。

第二个选项(更好的做法):

让你的视图控制器寄存器作为UIApplicationWillResignActiveNotification通知的观察员。这将允许您在应用即将进入后台时从视图控制器执行任何您想要的操作。

相关问题