在哪里实现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) {
}