【发布时间】:2013-03-20 17:11:33
【问题描述】:
我的应用启动时的加载顺序有些问题。
当应用处于非活动状态时,我的设备正在接收远程通知。我在 didFinishLaunchingWithOptions 中处理这个问题。我从 launchOptions 获得通知,然后生成 NotificationCenter 通知,该通知在我的视图控制器中处理。
在视图控制器中,处理通知的方法是对ui进行一些更改,包括修改一些组件的布局和调用加载到UIWebView中的javascript。
最后一部分永远不会发生,因为需要修改多个项目,包括将页面加载到 UIWebView 中发生在我的 viewDidLoad 中,它在处理通知的方法之后被调用。
在加载 UIWebView 或直到 viewDidLoad 完成执行之前,有什么方法可以暂停处理通知的方法的执行?
谢谢。
【问题讨论】:
-
为什么不在视图初始化后调用通知处理程序?通知应该在 viewDidLoad 完成后注册,以便仅在加载视图后调用。
-
我该怎么做?我在 awakeFromNib 中分配通知处理程序。你是说如果我在viewDidLoad中分配了notification handler,那么在viewDidLoad发生后通知会被转发给handler?
-
我尝试在 viewDidLoad 中分配处理程序,但它不起作用,因为通知是在 didFinishLaunchingWithOptions 中生成的,此时 viewDidLoad 还没有运行,所以处理程序不会处理生成的通知。
-
所以——当applicationDidFinishLaunching,你已经知道你有一个通知,对吧?那么,为什么要使用 NotificationCenter 呢?也许我不理解你原来的问题。
-
当 applicationDidFinishLaunching 时,我可能并不总是有通知。只有当此人从通知消息中启动应用程序时,我才会收到通知。如果该人正常启动应用程序,则 applicationDidFinishLaunching 将被调用,但我不想处理通知。当我收到通知时,我想在控制器中运行代码,这就是我使用通知中心的原因。工作流程:通知 -> 点击启动 -> applicationDidFinishLaunching -> 生成存在 pushNotification 的通知 -> 在 viewController 中执行代码
标签: iphone ios ipad push-notification apple-push-notifications