我的UIViewController类设置如下:
class ViewController: UIViewController {
var currentTask: NSURLSessionTask?
...
}
如果用户按下主页按钮,我想
self.currentTask.cancel()
但是如何从AppDelegate.swift访问这个变量?
func applicationWillResignActive(application: UIApplication) {
}
答案 0 :(得分:7)
在UIViewController类中的viewDidLoad()中,添加
// Add UIApplicationWillResignActiveNotification observer
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "resigningActive",
name: UIApplicationWillResignActiveNotification,
object: nil
)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "becomeActive",
name: UIApplicationDidBecomeActiveNotification,
object: nil
)
对于Swift 4,iOS 11,请使用:
NotificationCenter.default.addObserver(
self,
selector: #selector(ViewController.resigningActive),
name: NSNotification.Name.UIApplicationWillResignActive,
object: nil)
NotificationCenter.default.addObserver(
self,
selector: #selector(ViewController.becomeActive),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil)
最后将这两个函数添加到视图控制器中:
@objc fileprivate func resigningActive() {
print("== resigningActive ==")
}
@objc fileprivate func becomeActive() {
print("== becomeActive ==")
}
答案 1 :(得分:0)
对于Swift 4及更高版本,您可以使用
UIApplication.willResignActiveNotification
和
UIApplication.didBecomeActiveNotification
通知名称。