为了让ViewController
到" 做一些具体的事情 "就在应用程序进入后台状态之前...
我明白这种事情一般是在里面处理的
applicationWillResignActive(_:)
方法,但此方法位于AppDelegate
类内,而不是ViewController
。
这是我第一次在IOS上执行与生命周期相关的内容,因此我不确定是否:
1)从ViewController
类内部调用AppDelegate
方法。这意味着我必须将方法从私有更改为公共。
2)拥有ViewController
implement UIApplicationDelegate
PS - 只要AppDelegate
实施ViewController
代理,是否可以删除UIApplication
类?
编辑:我应该补充一点,这是一个只有一个视图控制器的单页应用程序(好吧,我想它最终会有一个设置视图控制器......但是' ViewController'我指的是永远不会从堆栈中弹出来。)
谢谢!
答案 0 :(得分:1)
通常你不应该删除AppDelegate,除非你有充分的理由。这不是一个好理由。
对于您的方案,我会调查使用NotificationCenter
来观察UIApplicationWillResignActive
事件。每次应用程序进入后台时都会触发此事件。
有关详细信息,请参阅:Apple Docs
e.g。
func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated: animated)
NotificationCenter.default.addObserver(self, selector: #selector(youFunction), name: .UIApplicationWillResignActive, object: nil)
}
func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated: animated)
NotificationCenter.default.removeObserver(self)
}
答案 1 :(得分:1)
使用NotificationCenter
在YourViewController中
class YourViewController : UIViewController {
override func viewDidAppear(_ animated: Bool) {
NotificationCenter.default.addObserver(self, selector: #selector(reloadTableData(_:)), name: .UIApplicationWillResignActive, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self, name: .UIApplicationWillResignActive, object: nil)
}
}
func reloadTableData(_ notification: Notification) {
}