我有三个viewController
第一,第二和第三
从第二次到第三次我使用
Third *third = [[Third alloc]initWithNibName:@"Third" bundle:nil];
[self presentModalViewController:third animated:YES];
[third release];
现在我希望从第三到第一回来;然后我在第二个代码中设置viewDidAppear:
[self dismissModalViewControllerAnimated:NO];
但是1秒我看到第二,我不想看它......我怎么办?
答案 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];
..
你完成了......(如果你知道代表团,那就很容易了。)