当我的应用首次从本地通知加载时,我拨打didReceiveLocalNotification
,在那里发布通知以运行特定功能:
NSNotificationCenter.defaultCenter().postNotificationName("popupShouldAppear", object: self)
然后在视图控制器中,我在viewDidAppear()
中收听该通知:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "createPopupFromNotification", name: "dayPopupShouldAppear", object: nil)
当应用程序已在后台加载时,上述代码可正常工作,但最初从本地通知将应用程序加载到内存时,最终函数(createPopupFromNotification()
)无法调用。
根据我提出的一系列警报,似乎viewDidAppear()
在 didFinishLaunchingWithOptions
执行didReceiveLocalNotification
之前被称为,所以当本地通知最终宣布时,我失去了viewDidAppear()
观察它的机会。
此评估似乎准确吗?如果是这样,有没有办法推迟viewDidAppear()
?
答案 0 :(得分:0)
根据苹果文档
"在状态恢复发生之后但之前调用此方法 您的应用程序窗口和其他用户界面已经显示。"
您的问题似乎与您在创建通知之前调用通知相反,这表明viewDidAppear尚未从您发布通知的位置开始。
我建议您第一次在viewDidLoad中调用此函数,如果它每次启动应用程序时运行,或者从委托设置一个标志到您的视图控制器,以便在需要时首次运行该方法。 之后,您只需转发通知即可显示它。