改变观点的安全方式?

时间:2014-02-18 16:08:14

标签: ios uiview uiviewcontroller uinavigationcontroller subviews

我们在应用程序委托中有这样的功能。当本地通知到来时,执行下面的代码并且可能导致崩溃,正如我在insertSubview执行的行中所理解的那样。 我怎么能安全地做到这一点?感谢。

-(void)changeController:(UIViewController*)newController {
    self.currentController = newController;
    if([self.window.subviews containsObject:self.menuController.view]) {
        [self.window insertSubview:newController.view belowSubview:self.menuController.view];
    }
    else {
        self.window.rootViewController = self.currentController;
    }
}

1 个答案:

答案 0 :(得分:1)

如果您的视图/视图控制器是UINavigationViewController的一部分,那么您应该管理它们的方式是使用该类的方法:特别是pushViewController:animated:之类的方法。通常,如果您的视图由其自己的视图控制器“控制”,则您可能不应该抓取这些视图并将它们附加到其他视图层次结构。