【问题标题】:Determine if UIViewController is closing due to application exit?确定 UIViewController 是否因应用程序退出而关闭?
【发布时间】:2009-09-27 00:28:13
【问题描述】:

有没有一种方法可以在 viewWillDisappear 中测试它是否因为应用程序退出而被调用,而不是正常方式被关闭? App Delegate 中的 applicationWillTerminate 方法在当前视图关闭后调用。我想做不同的事情,具体取决于它是由于 IBAction 还是用户单击菜单按钮而被解雇。

谢谢!

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    您应该在您的控制器中使用观察UIApplicationWillTerminateNotification,设置一个标志,然后在您的viewWillDisappear 实现中检查该标志。

    NSNotificationCenter* defaultCenter = [NSNotificationCenter defaultCenter];
    [defaultCenter addObserver:self       
                      selector:@selector(applicationWillTerminate:)
                          name:UIApplicationWillTerminateNotification
                        object:nil];
    

    【讨论】:

    • 我看到 viewWillDisappear 在该通知之前被调用。那么设置标志有什么关系呢?
    【解决方案2】:

    我尚未将它用于您的目的,但 UIApplicationWillResignActiveNotification 通知可能会在调用 applicationWillTerminate 之前发生。

    扔掉……

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResign:) name:UIApplicationWillResignActiveNotification object:NULL];
    

    ...进入您的 UIViewController 进行测试。

    【讨论】:

    • UIApplicationWillResignActiveNotification 由于菜单按钮而关闭应用程序时似乎没有被触发。不过,applicationWillTerminate 总是会触发。
    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2015-08-08
    相关资源
    最近更新 更多