viewDidAppear在didFinishLaunchingWithOptions之前调用

时间:2015-05-21 23:14:02

标签: swift uilocalnotification nsnotificationcenter appdelegate viewdidappear

当我的应用首次从本地通知加载时,我拨打didReceiveLocalNotification,在那里发布通知以运行特定功能:

NSNotificationCenter.defaultCenter().postNotificationName("popupShouldAppear", object: self)

然后在视图控制器中,我在viewDidAppear()中收听该通知:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "createPopupFromNotification", name: "dayPopupShouldAppear", object: nil)

当应用程序已在后台加载时,上述代码可正常工作,但最初从本地通知将应用程序加载到内存时,最终函数(createPopupFromNotification())无法调用。

根据我提出的一系列警报,似乎viewDidAppear()didFinishLaunchingWithOptions执行didReceiveLocalNotification之前被称为,所以当本地通知最终宣布时,我失去了viewDidAppear()观察它的机会。

此评估似乎准确吗?如果是这样,有没有办法推迟viewDidAppear()

1 个答案:

答案 0 :(得分:0)

根据苹果文档

  

"在状态恢复发生之后但之前调用此方法   您的应用程序窗口和其他用户界面已经显示。"

您的问题似乎与您在创建通知之前调用通知相反,这表明viewDidAppear尚未从您发布通知的位置开始。

我建议您第一次在viewDidLoad中调用此函数,如果它每次启动应用程序时运行,或者从委托设置一个标志到您的视图控制器,以便在需要时首次运行该方法。 之后,您只需转发通知即可显示它。