【问题标题】:ViewController and Notification Center (the view, not the design pattern :p)ViewController 和通知中心(视图,而不是设计模式:p)
【发布时间】:2012-12-03 11:07:42
【问题描述】:

我有一个包含实时摄像机源的 viewController。 像许多应用程序一样,在viewWillAppearviewWillDisappear 方法中,我同时启动和停止摄像头。

像很多次和情况一样,似乎总是调用 viewWillDisappear 而不再调用 willWillAppear(我会说是从 iOS 4.0 开始?)

事情是这样的:当这个视图是我的 TabBar 的 selectedVC 时,用户通过一直向下拖动来显示通知中心,viewWillDisappear 总是被调用并停止实时提要。但是当这个视图被关闭时,我再也没有收到控制器再次激活的回调。

有什么建议吗?谢谢 ;)

【问题讨论】:

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


    【解决方案1】:

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

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

    所以很遗憾,我没有任何好的建议给你!

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

    - (void)applicationDidBecomeActive:(UIApplication *)application
    

    来自iOS App Programming Guide

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

    【讨论】:

    • 谢谢伙计,这就是我所害怕的。我认为它是从 iOS 4 开始改变的,但它可能是 iOS5。尽管如此,所有消失的方法都被调用,没有出现,这很糟糕!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多