【问题标题】:How to present the same modalView after dismissing it once关闭一次后如何呈现相同的modalView
【发布时间】: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>.'

文档在这里没有添加任何线索。

【问题讨论】:

    标签: cocoa-touch modalviewcontroller


    【解决方案1】:

    @David,将MYViewController 设为实例变量,并像这样初始化它:

    if (myInstance==nil)
         //create instance of MYViewController
         //myInstance.delegate=self
    //present modal VC
    

    MYViewController 中创建一个协议以协调解除MYViewController 可能位于donecancel 按钮上。在按钮操作中调用类似

        done 
        {
           if([delegate respondsToSelector:@selector(willDismissModalView)])
           {
               [delegate willDismissModalView];
           }
       }
    

    并在您的 VC 的 willDismissModalView 方法中关闭 MYViewController。这样你可以做 'n' 次。

    【讨论】:

    【解决方案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 并且它不再显示。查看我未回复的帖子:stackoverflow.com/questions/8076211/…
    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多