我有三个视图控制器
第一、第二和第三
从第二到打开第三我使用
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];
..你完成了..(如果你知道委派,这很容易。