如何知道UIViewController视图何时在后台显示?

Fra*_*gle 6 iphone uiviewcontroller

在iOS4.2/iPhone4中

  • 单击图标以启动应用程序(显示某些视图控制器视图)
  • 单击iPhone主页按钮(返回主屏幕)
  • 双击主页按钮
  • 从选择中选择以前启动的应用程序

现在我可以看到我的app delegate在最后一步之后选中它时会收到一条消息"applicationDidBecomeActive",但是我的viewController(当前显示的那个视图)是如何知道的?

viewDidLoad已被调用,因此不会再次调用.不再调用viewWillLoad.

似乎无法弄明白.我问的原因是我想检查是否有任何设置更改,但是想在视图控制器中执行此操作,因为这是关心的事情.

Dan*_*ich 12

答案就在这里:处理applicationDidBecomeActive - "视图控制器如何响应应用程序变为活动状态?"

用于NSNotificationCenter通知UIApplicationDidBecomeActiveNotification视图控制器中的事件.


Tho*_*lin 5

在你appDelegate applicationDidBecomeActive把这个:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    UINavigationController *navc = (UINavigationController *)[tabBarController selectedViewController];

    UIViewController *topvc = [navc topViewController];

    if ([topvc respondsToSelector:@selector(viewControllerDidBecomeActive)]) 
    {
        [topvc performSelector:@selector(viewControllerDidBecomeActive)];
    }
}
Run Code Online (Sandbox Code Playgroud)

这将获得在屏幕上看到的viewController.你只需要viewControllerDidBecomeActive在每个viewControllers 上实现;)