ios - viewDidAppear 在 iOS5 中调用了两次

标签 ios uinavigationcontroller ios5 viewdidappear

我正在开发一个带有 UINavigatorController 的应用程序。我在第二个推送的 viewController 中使用方法 viewDidAppear 在外部服务器中查找信息。

嗯。虽然一开始在 iOS5 中运行良好,但我意识到 viewDidAppear 在 iOS4.3 中没有被调用,所以我将这段代码放在根目录中:

- (void)navigationController:(UINavigationController *)navigationController 
       didShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{
    [viewController viewDidAppear:animated];
}

此后,该应用程序开始在 iOS4.3 中正常运行。然而,在 iOS5 中没有,因为它调用了两次 viewDidAppear(第一次调用的是 navigationController:didShowViewController:animated:)

我应该怎么做才能只调用一次 viewDidAppear?

非常感谢

最佳答案

我看到的唯一真正的解决方案(或者更确切地说是 iOS 4.x 的解决方法)如果您在 viewWillAppear 调用中设置某种状态并检查它是否已在后续调用中设置,例如

-(void)viewWillAppear:(BOOL)animated {
    if (!viewWillAppearCalled) {
        viewWillAppearCalled = YES;

        /* do stuff */
    }
}

然后您可以安全地手动调用它以兼容 iOS 4.x。

对于 viewDidAppear、viewWillDisappear 和 viewDidDisappear 也可以做同样的事情。

关于ios - viewDidAppear 在 iOS5 中调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646060/

相关文章:

iphone - MPMoviePlayerController 上的专辑封面

ios - Xcode 8 APS Environment Entitlement 不会设置为生产环境

ios - 选择多个视频

ios - 如何在嵌套 Controller 上管理状态栏显示/隐藏

iOS - 跨 View Controller 保留背景动画

xcode - GLKViewController 位于导航 Controller 内的 ViewController 内

objective-c - 如何使用 Xcode 4.2.1 解析简单的 XML 文件

ios - 根据 "1100000001"等数字生成条形码

Swift Navigation Controller 轻扫以返回任何地方

ios - 创建 UIView 和 subview 需要几秒钟是正常的吗?