IOS:关闭两个viewController

时间:2012-04-18 15:59:33

标签: ios xcode uiviewcontroller dismiss

我有三个viewController

第一,第二和第三

从第二次到第三次我使用

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

现在我希望从第三到第一回来;然后我在第二个代码中设置viewDidAppear:

[self dismissModalViewControllerAnimated:NO];

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

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:5)

第一种情况如何排除第三种模式观点?也许用户触摸“完成”按钮?如果是这样,它就在你想要解散的按钮的处理程序中。

你可以将两者都解雇为:

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

答案 2 :(得分:0)

这种情况发生了coz viewDidAppear在视图出现之前每次都被调用,所以一看到它就会解除它并消失..

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

 [self.navigationController popToRootViewControllerAnimated:YES];    

EDIT

只是想到这可以通过使用委托来实现..你做第二个委托第三个,并且一旦你解雇了thirdviecontroller就给委托发送一条消息。在这个消息中调用[self dismissModalViewControllerAnimated:NO]; .. 你完成了......(如果你知道代表团,那就很容易了。)