ViewController和Notification Center(视图,不是设计模式:p)

时间:2012-12-03 11:07:43

标签: iphone ios model-view-controller uiviewcontroller notificationcenter

我有一个包含实时相机Feed的viewController。 与许多应用一样,在viewWillAppearviewWillDisappear方法中,我都会启动和停止相机。

像许多次和情况一样,似乎总是调用viewWillDisappear并且不再调用willWillAppear(因为iOS 4.0我会说?)

这就是:当这个视图是我的TabBar的selectedVC,并且用户通过ragging al向下显示通知中心时,始终会调用viewWillDisappear并停止实时Feed。但是当这个观点被驳回时,我再也没有得到控制器重新上线的回调。

任何提示?谢谢;)

2 个答案:

答案 0 :(得分:3)

自iOS5以来,对viewWillAppear和viewWillDisappear的调用显然发生了变化。所以无论发生什么,如果你可以依赖它在iOS4中发生,它不应该在iOS5下以另一种方式工作。这对我来说很奇怪,它成了一个反复试验的事情!

-viewWillAppear只能保证在之前调用过-viewWillDisappear的地方调用 - 但是对于大多数模态视图/窗口,情况似乎并非如此!这可能是通知中心的问题,它可能被视为一个模态窗口左右!

很遗憾,我没有任何好的建议!

您可以检查通知中心关闭时是否正在调用applicationDidBecomeActive,并以某种方式通过应用程序代理连接您的逻辑。

- (void)applicationDidBecomeActive:(UIApplication *)application

来自iOS App Programming Guide

  

在iOS 5中,显示横幅的通知不会停用您的   应用程序以基于警报的通知的方式执行。相反,横幅   沿应用程序窗口的顶部边缘放置,您的应用程序继续   像以前一样接收触摸事件。但是,如果用户拉下来   横幅显示通知中心,您的应用程序移动到   非活动状态,就像发生了基于警报的中断一样。   您的应用程序将保持非活动状态,直到用户解除   通知中心或启动另一个应用程序。此时,你的应用程序   移动到适当的活动或背景状态。用户可以使用   设置应用程序,用于配置显示横幅的通知和   显示警报。

答案 1 :(得分:1)

我刚刚使用AppDelegate ApplicationDidBecomeActive方法找到了解决方法。 之后,我手动调用[selectedViewController viewWillAppear:YES];:)