viewController 关闭时调用的函数(当应用程序退出时)?
Posted
技术标签:
【中文标题】viewController 关闭时调用的函数(当应用程序退出时)?【英文标题】:Function called on viewController close (when application exit)? 【发布时间】:2015-06-25 08:02:11 【问题描述】:我正在寻找一个在应用程序退出时在UIViewController
上调用的函数。
我用viewWillDisappear
和applicationWillTerminate
进行了尝试,但没有任何效果。
我想在此函数中保存来自UIViewController
的设置。
【问题讨论】:
【参考方案1】:就像@Jeff 说的,但是
在 Swift 3 中:
override func viewDidLoad ()
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(suspending), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(suspending), name: NSNotification.Name.UIApplicationWillTerminate, object: nil)
func suspending ()
print("suspending...")
UIApplicationWillResignActive
发生在应用程序被换出时,而
UIApplicationWillTerminate
在退出时触发,例如按下 Home 键时。
【讨论】:
【参考方案2】:您需要注册通知以了解在应用终止时何时进行了适当的调用。
NSNotificationCenter .defaultCenter() .addObserver(self, selector: Selector("callBack"), name: UIApplicationWillResignActiveNotification, object: nil)
NSNotificationCenter .defaultCenter() .addObserver(self, selector: Selector("callBack"), name: UIApplicationWillTerminateNotification, object: nil)
func callback()
// Save your settings
记得删除viewWillDisappear:
中的观察者
override func viewWillDisappear(animated: Bool)
super.viewWillDisappear(animated)
NSNotificationCenter .defaultCenter() .removeObserver(self)
【讨论】:
我在 viewDidLoad 函数 NSNotificationCenter .defaultCenter() .addObserver(self, selector: Selector("saveWorkingState"), name: UIApplicationWillResignActiveNotification, object: nil) NSNotificationCenter .defaultCenter() 中添加了代码。 addObserver(self, selector: Selector("saveWorkingState"), name: UIApplicationWillTerminateNotification, object: nil) 但永远不会调用“public func saveWorkingState()”。我用一个按钮试了一下,我在上面调用了退出函数(在模拟器中)exit(0)
不应用于测试应用程序是否终止。这将立即杀死应用程序,而不会发生任何适当的关闭。只需按 Cmd + Shift + H 即可触发按下主页按钮。【参考方案3】:
你可以在 ViewController 中调用 deinit
deinit
deleteUnsavedPhotoFromServer()
【讨论】:
【参考方案4】:斯威夫特 5.5
用于应用输入背景
NotificationCenter.default.addObserver(self, selector: #selector(appResignActiveNotify), name: UIApplication.willResignActiveNotification, object: nil)
@objc func appResignActiveNotify()
//called when App enter background
对于应用程序终止
NotificationCenter.default.addObserver(self, selector: #selector(appTerminateNotify), name: UIApplication.willTerminateNotification, object: nil)
@objc func appTerminateNotify()
//called when Terminate
【讨论】:
以上是关于viewController 关闭时调用的函数(当应用程序退出时)?的主要内容,如果未能解决你的问题,请参考以下文章
创建一个 UIView 子类,当它的父 viewController 出现时调用委托函数?
iOS9:UIViewController:当 viewController 在第二个 UIWindow 中运行时,不会在拆分视图更改时调用 viewWillTransitionToSize