IOS:关闭两个视图控制器



我有三个视图控制器

第一、第二和第三

从第二到打开第三我使用

Third *third = [[Third alloc]initWithNibName:@"Third" bundle:nil];
[self presentModalViewController:third animated:YES];
[third release];

现在我想从第三返回到第一;然后我在 viewDidAppear 中设置了第二个代码:

[self dismissModalViewControllerAnimated:NO];

但是有 1 秒钟我看到了第二,我不想看它......我该怎么办?

您需要先关闭第三个视图控制器,然后再关闭第二个视图控制器。当您想要转到第一个视图控制器时,请执行以下代码。

-(void)goToFirstView{
        UIViewController *vc = [self parentViewController];
   //     UIViewController *vc = [self presentingViewController]; //ios 5 or later
        [self dismissModalViewControllerAnimated:NO];
        [vc dismissModalViewControllerAnimated:YES];
 }

第三模态视图最初是如何被驳回的? 也许是通过用户触摸"完成"按钮? 如果是这样,则在按钮的处理程序中,您要同时关闭两者。

您可以同时将两者视为:

[self dismissModalViewControllerAnimated: YES];
[self.presentingViewController dismissModalViewControllerAnimated: NO];

这种情况会发生,因为每次视图出现之前都会调用 viewDidAppear,所以一旦它出现,你就忽略它,它就会消失。

我不认为你想做的事情可以用modalViewControllers来实现......而是使用导航控制器并继续将视图控制器添加到堆栈中,当您想转到第一个视图控制器时,只需调用

 [self.navigationController popToRootViewControllerAnimated:YES];    

EDIT

只是想一想,这可以通过使用委托来实现......你让第二个成为第三个代表,一旦你解雇第三个控制器,就向委托发送消息。在此消息中调用[self dismissModalViewControllerAnimated:NO];..你完成了..(如果你知道委派,这很容易。

最新更新