如何在appdelegate中调用viewController的方法

How to call viewController's method in appdelegate

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

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

怎么可能?

使用UIApplicationDidBecomeActiveNotification。看到这个 answer.

这可能对您有所帮助(在 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")
}

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

这是删除观察者的代码:

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