iOS:关闭两个视图控制器

6

我有三个视图控制器

分别是第一个、第二个和第三个

从第二个到第三个的切换我使用了以下方法

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

现在我想从第三个返回到第一个;然后我在第二个视图控制器的viewDidAppear方法中添加了以下代码:
[self dismissModalViewControllerAnimated:NO];

但是对于1秒钟,我看到"Second",并且不想看它...我该怎么办?


1
如何将第二个视图添加到第一个视图? - Pavan
3个回答

15

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

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

5

第三个模态视图是如何被关闭的?也许是用户触摸“完成”按钮吗?如果是这样,那么你需要在按钮的处理程序中同时关闭它们。

你可以这样关闭它们:

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

1
我认为“animated”参数应该是NO,然后是YES,可以参考rakeshNS的答案。 - onmyway133

0

这是因为每次视图出现之前都会调用viewDidAppear,所以一旦它出现,您就会将其解除并使其消失。

我认为您尝试做的事情无法通过modalViewControllers实现... 相反,使用navigationController并将您的视图控制器添加到堆栈中,当您想要转到第一个视图控制器时,只需调用

 [self.navigationController popToRootViewControllerAnimated:YES];    

编辑:

刚想到这可以通过使用委托来实现。你将第二个视图控制器设置为第三个视图控制器的委托,当你关闭第三个视图控制器时,向委托发送一条消息。在这个消息中调用[self dismissModalViewControllerAnimated:NO];..就完成了。(如果你知道委托,这很容易。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接