我在第一次出现模态视图控制器时遇到了一些问题,所以我只是启动了一个小测试方法,它会出现,解散并再次呈现相同的控制器模式。
// This is just test Code.
MYViewController *vc = [[MYViewController alloc] init];
[self presentModalViewController:vc animated:YES];
[self dismissModalViewControllerAnimated:YES];
[self presentModalViewController:vc animated:YES];
我收到错误:
2011-11-15 09:50:42.678 Proyecto3[1260:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <RootViewController: 0x6d9d090>.'
文档不会在这里添加任何线索。
答案 0 :(得分:1)
@David,使MYViewController
成为一个实例变量,并将其初始化为:
if (myInstance==nil)
//create instance of MYViewController
//myInstance.delegate=self
//present modal VC
在MYViewController
中,创建一个协调解雇MYViewController
的协议可能位于done
或cancel
按钮上。在按钮操作中调用一些像
done
{
if([delegate respondsToSelector:@selector(willDismissModalView)])
{
[delegate willDismissModalView];
}
}
并在你的VC willDismissModalView
方法中解雇MYViewController
。这样你就可以做到这一点。
答案 1 :(得分:0)
在你的代码中[self dismissModalViewControllerAnimated:YES]; 将不会对modalViewController执行任何操作,因为这里的“self”是viewController,您尝试在其中呈现modalViewController“vc”。再次提示已经呈现的modalViewController。这将导致终止。
您可以在该viewController中解除modalViewController vc,此处为vc。
答案 2 :(得分:0)
在动画制作时,您无法呈现/关闭视图控制器,我认为这可行
MYViewController *vc = [[MYViewController alloc] init];
[self presentModalViewController:vc animated:NO];
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController:vc animated:YES];
但我真的没有理由这样做,为什么你要解雇并重新呈现已经呈现的模态视图控制器?