ModalView在iOS7中崩溃

时间:2013-12-20 15:10:27

标签: ios objective-c ios7

我在iOS7中遇到应用程序崩溃,但正在使用iOS6。在从AppDelegate调试下一个代码时,我检查了在iOS7中执行下一个函数然后加载了模态视图控制器。

- (void)presentModalWebViewWithURL:(NSURL *)url title:(NSString *)title
{
    [self.modalWebViewController dismissModalViewControllerAnimated:YES];
    self.modalWebViewController = [[[MyModalWebViewController alloc] initWithURL:url] autorelease];
    self.modalWebViewController.title = title;
    UINavigationController *nav = [self.modalWebViewController modalNavigationControllerWithTarget:self dismissSelector:@selector(dismissModalWebView)];
    [self.window.rootViewController presentViewController:nav animated:YES completion:NULL];
}

在iOS6中,我检查该函数是否在最后一行停止执行,直到加载了模态视图控制器。

iOS7中发生的情况是,当模态视图控制器尝试加载运行viewWillAppear时,我能够检查模态视图控制器是否已更改所有值,甚至属性指向不同类型的对象。我猜他们正在被解除分配,但我无法弄清楚为什么以及如何解决它。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

当您关闭模态视图控制器时,您应该在呈现视图控制器的视图控制器上调用dismiss方法。此外,不推荐使用dismissModalViewControllerAnimated:方法,您应该使用dismissViewControllerAnimated:completion:。所以看一下你的代码,你可能应该在self.window.rootViewController上调用dismiss方法,因为那就是你提供的模态视图。

另外,不知道代码的其余部分是什么样的,我假设第一次调用它,self.modalWebViewController为nil,所以你可能想检查self.modalWebViewController是否设置为某个东西在你打电话给解雇之前,并且在你解雇它的时候也把它设置为零。