【问题标题】:Method in viewWillAppear and viewDidLoad didn't loaded未加载 viewWillAppear 和 viewDidLoad 中的方法
【发布时间】:2015-09-16 23:03:10
【问题描述】:

我在视图控制器中创建了一个检查服务器状态的方法,每次打开应用程序时都需要检查它。

我从 viewWillAppear 和 viewDidLoad 中调用 [self checkStatus];,但是当我打开应用程序时,通过单击主页按钮,我尝试再次打开应用程序(单击应用程序中的应用程序图标)此方法未被调用。我有一个 NSLog 可以查看它何时启动。

我很沮丧。感谢您的帮助。

【问题讨论】:

    标签: ios objective-c viewdidload viewwillappear


    【解决方案1】:

    您可以使用NotificationCenter 对应用更改做出反应:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:UIApplicationDidBecomeActiveNotification object:nil];
    

    顺便说一句:不需要的时候别忘了removeObserver

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
    

    您也可以使用UIApplicationWillEnterForegroundNotification 等,这取决于您的需要。

    您应该在 Apple 开发者页面上阅读有关应用程序生命周期的信息 :)。阅读:

    • AppleDeveloperLink 特别是部分:“应用程序的执行状态”,以了解有关应用程序生命周期的更多信息。

    • StackOverflowLink 了解有关视图生命周期的更多信息。

    【讨论】:

    • 我需要把这个放在哪里?在视图控制器中?在视图上会出现吗?对不起,我的菜鸟知识。
    • 我知道,我正在尝试调试我的应用程序以查看结果,但是当应用程序进入后台时,xcode 日志停止侦听,所以我现在不知道这是否有效或不是。当我看到它时,我接受了答案。我很慢,对不起。
    • @Victor_J_Martin 我不明白。您已经询问了如果应用程序正在/从后台获取信息(当您从 HomeScreen 回来时您现在应该收到它)。如果您想在后台查看日志,这与您提出的问题无关。在这种情况下,您应该设置正确的 backgroundMode。
    • 我正在努力了解您的回答是否能解决我的问题。我没有接受答案,因为我看不到其他问题的结果。但是感谢您的帮助。
    【解决方案2】:

    iOS 不再调用这些方法,而是AppDelegate 中的委托方法。然后,您必须将消息传播到您的控制器。

    希望对您有所帮助:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/

    【讨论】:

    • 那么,每次app出现时我需要在哪里调用方法[self checkStatus]打开?
    • 您必须在AppDelegate 中捕获操作,然后您必须具有对控制器的引用。或者您可以使用NSNotification 将消息发送给其他组件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多