如何在appdelegate中调用viewController的方法

时间:2018-01-16 08:20:39

标签: ios swift appdelegate nsnotification application-lifecycle

我想要viewController的更新数据方法。

所以我想在applicationDidBecomeActive(_ application: UIApplication)时使用viewController的更新方法。

怎么可能?

2 个答案:

答案 0 :(得分:2)

使用UIApplicationDidBecomeActiveNotification。请参阅此answer

答案 1 :(得分:1)

这可能对你有帮助(在Swift 4中测试)

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self,
                                               selector: #selector(applicationDidBecomeActive),
                                               name: Notification.Name.UIApplicationDidBecomeActive,
                                               object: nil)
    }

}

@objc func applicationDidBecomeActive() {
    print("UIApplicationDidBecomeActive")
}

注意:当您的视图控制器不再使用/内存时,不要忘记删除观察者(因为这是一个应用程序级别的观察者,并且每次您的应用程序变为活动时都会被调用,无论是您的视图控制器是否处于活动状态。

以下是删除观察者的代码:

NotificationCenter.default.removeObserver(self,
                                          name: Notification.Name.UIApplicationDidBecomeActive,
                                          object: nil)