在哪里实现applicationWillResignActive(_:)?
Where to implement applicationWillResignActive(_:)?
为了让 ViewController
在应用程序进入后台状态之前“做一些特定的事情”。 ..
据我所知,这种事情通常在内部处理
applicationWillResignActive(_:)
方法,但此方法位于 AppDelegate
class 中,而不是 ViewController
.
这是我第一次在IOS上做生命周期相关的东西,所以我不确定是否:
1) 从 AppDelegate
class 内部调用 ViewController
方法。这意味着我必须将方法从 private 更改为 public.
2) 有 ViewController
implement UIApplicationDelegate
PS - 是不是只要删除AppDelegate
class就可以了因为 ViewController
实现了 UIApplication
委托?
编辑:我应该补充一点,这是一个只有一个视图控制器的单页应用程序(好吧,我想它最终会有一个设置视图控制器......但是 'ViewController' 我指的永远不会从堆栈中弹出)。
谢谢!
一般情况下,您不应删除 AppDelegate,除非您有充分的理由。这不是一个很好的理由。
对于您的场景,我将调查使用 NotificationCenter
来观察 UIApplicationWillResignActive
事件。每次应用程序进入后台时都会触发此事件。
有关详细信息,请参阅:Apple Docs
例如
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)
}
使用通知中心
在 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) {
}
为了让 ViewController
在应用程序进入后台状态之前“做一些特定的事情”。 ..
据我所知,这种事情通常在内部处理
applicationWillResignActive(_:)
方法,但此方法位于 AppDelegate
class 中,而不是 ViewController
.
这是我第一次在IOS上做生命周期相关的东西,所以我不确定是否:
1) 从 AppDelegate
class 内部调用 ViewController
方法。这意味着我必须将方法从 private 更改为 public.
2) 有 ViewController
implement UIApplicationDelegate
PS - 是不是只要删除AppDelegate
class就可以了因为 ViewController
实现了 UIApplication
委托?
编辑:我应该补充一点,这是一个只有一个视图控制器的单页应用程序(好吧,我想它最终会有一个设置视图控制器......但是 'ViewController' 我指的永远不会从堆栈中弹出)。
谢谢!
一般情况下,您不应删除 AppDelegate,除非您有充分的理由。这不是一个很好的理由。
对于您的场景,我将调查使用 NotificationCenter
来观察 UIApplicationWillResignActive
事件。每次应用程序进入后台时都会触发此事件。
有关详细信息,请参阅:Apple Docs
例如
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)
}
使用通知中心
在 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) {
}