关闭一次后如何呈现相同的modalView
Posted
技术标签:
【中文标题】关闭一次后如何呈现相同的modalView【英文标题】:How to present the same modalView after dismissing it once 【发布时间】:2011-11-15 08:58:44 【问题描述】:我在第一次呈现模态视图控制器后尝试呈现它时遇到了一些问题,所以我只是开始了一个小测试方法,它以模态方式呈现、关闭和再次呈现同一个控制器。
// 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>.'
文档在这里没有添加任何线索。
【问题讨论】:
【参考方案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
。这样你可以做 'n' 次。
【讨论】:
这就是我在我的应用程序中的做法(这只是测试代码)。查看我未回复的帖子:***.com/questions/8076211/…【参考方案2】:在您的代码中 [self dismissModalViewControllerAnimated:YES]; 不会对 modalViewController 执行任何操作,因为这里的“self”是您尝试呈现 modalViewController“vc”的 viewController。再次,您正在呈现已经呈现的 modalViewController。这将导致终止。
您可以在该 viewController 中关闭 modalViewController vc,此处为 vc。
【讨论】:
但这与文档所说的相反:“dismissModalViewControllerAnimated:关闭接收者呈现的模态视图控制器。”。同样在 View Controller Programming Guide 中,模态视图控制器以这种方式从父控制器中解散。【参考方案3】:你不能在动画时展示/关闭视图控制器,我认为这可行
MYViewController *vc = [[MYViewController alloc] init];
[self presentModalViewController:vc animated:NO];
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController:vc animated:YES];
但我真的看不出有任何这样做的理由,为什么要关闭并重新呈现已经呈现的模态视图控制器?
【讨论】:
这是一个测试代码,用于查看我的应用程序有什么问题。我试图在关闭它后第二次呈现 modalViewController 并且它不再显示。查看我未回复的帖子:***.com/questions/8076211/…以上是关于关闭一次后如何呈现相同的modalView的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 如果应用程序首次启动 - 呈现 ModalView