在演示或解除正在进行时尝试从视图控制器(UIModalViewController)中解除

时间:2016-09-07 14:20:31

标签: ios objective-c iphone ios7 uiviewcontroller

我刚刚开始研究ios。 我创建了Modalviewcontroller (VC1)并展示了另一个modalViewcontroller (VC2)。 VC2上有一个按钮(dismiss),它必须关闭两个视图控制器。

我知道的方式是打电话: -

[self dismissViewControllerAnimated:YES completion:nil];
在VC2中

然后在VC1中调用相同的文件

所以我创建了一个委托,告诉我是否在VC2中点击了dismiss。 所以当点击解雇时: -

我打电话

[self dismissViewControllerAnimated:YES completion:nil];
在VC2中

然后该委托方法将我带到VC1 在那里我再次打电话

[self dismissViewControllerAnimated:YES completion:nil];

这个方法非常有效,直到我在ios9中使用该应用程序 当我转移到ios7时,我开始收到警告,VC1没有被解雇。

请让我知道为什么会这样。

所以那些对我有用的部分,如评论中所述。

[self.presentedViewController dismissViewControllerAnimated:YES completion:^{
        [self dismissViewControllerAnimated:YES completion:nil];
    }];

1 个答案:

答案 0 :(得分:0)

因此,错误会告诉您到底发生了什么。你试图解雇VC1,而你的VC2解雇了。通过将dismissViewControllerAnimated放入委托方法并不能保证VC1之前会被解雇,而不是在第一次解雇后你应该在完成块中调用[self dismissViewControllerAnimated:YES completion:nil];,所以你的代码看起来像这样:

[self dismissViewControllerAnimated:YES
                         completion:^{
                             [self dismissViewControllerAnimated:YES completion:nil];
                         }];