【发布时间】:2013-08-12 13:12:11
【问题描述】:
我想从应用程序的第二个屏幕显示modalViewController,当我关闭控制器时,它应该导航到第一个屏幕。下面的代码在 iPhone 4、5 和 iPod Touch 中运行良好,但在 iPAD 中却不行。目标是当我关闭modalViewController 时,它不应该返回到第二个屏幕,而是应该显示第一个屏幕。
ShareEmail *shareEmail = [[ShareEmail alloc] initWithNibName:[NSString stringWithFormat:@"%@",xibShareEmail] bundle:nil];
shareEmail.fromWer = @"ownPer";
[self presentModalViewController:shareEmail animated:NO];
[shareEmail release];
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
在共享电子邮件类中
[self dismissModalViewControllerAnimated:YES];
【问题讨论】:
-
你不是在
shareEmail还在显示的时候释放它吗? -
首先,您正在使用已弃用的方法。您应该使用presentViewController:animated:completion 和dismissViewControllerAnimate:completion。其次,您正在从错误的类中解散模态显示的控制器。显示模态控制器的类有责任解除它;这样代码应该放在您分配和呈现 ShareEmail 视图控制器的类中,而不是在 ShareEmail 视图控制器本身中。可能无法修复崩溃,但请按照以下步骤开始,以消除最明显的问题来源。
-
发布应该没问题,作为一般规则,您不负责保留传递给此类方法的对象。但是,UIViewController 文档在这一点上并不完全清楚,因此使用自动释放将是最安全的。不过,使用 ARC 将是解决发布困境的最佳解决方案!
-
谢谢@petemorris。我想不通。这在 iPhone 中运行良好。但我有这个问题发生在 iPad 上。还是有什么替代方法?
-
发生这种情况时控制台有输出吗?
标签: ios objective-c uiviewcontroller