如何在“func applicationWillResignActive”中访问UIViewController的变量? Swift,iOS xcode

时间:2015-07-13 04:51:35

标签: ios xcode swift uiviewcontroller

我的UIViewController类设置如下:

class ViewController: UIViewController {

    var currentTask: NSURLSessionTask?

    ...

}

如果用户按下主页按钮,我想

self.currentTask.cancel()

但是如何从AppDelegate.swift访问这个变量?

func applicationWillResignActive(application: UIApplication) {

}

2 个答案:

答案 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

通知名称。