如何在appdelegate中调用viewController的方法
Posted
技术标签:
【中文标题】如何在appdelegate中调用viewController的方法【英文标题】:How to call viewController's method in appdelegate 【发布时间】:2018-01-16 08:20:38 【问题描述】:我想要 viewController 的更新数据的方法。
所以我想在applicationDidBecomeActive(_ application: UIApplication)
时使用viewController的更新方法。
怎么可能?
【问题讨论】:
class_obj.method()
不工作?
在提出关于 SO 的问题之前,您确实需要做一些研究。请先阅读How to Ask,然后再询问其他人
【参考方案1】:
使用UIApplicationDidBecomeActiveNotification
。看到这个answer。
【讨论】:
【参考方案2】:这可能会对您有所帮助(在 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)
【讨论】:
我做到了。谢谢! @usinuniverse - 当您的视图控制器不再使用/内存时,不要忘记删除观察者。查看更新的答案以上是关于如何在appdelegate中调用viewController的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在appdelegate中调用viewController的方法
Swift开发教程--如何在别的类中调用AppDelegate中的方法
如何从 UI Xctest 调用 Appdelegate 的“OpenURL”功能
如何在不传递委托的情况下从 RootViewController 调用 AppDelegate 方法?