6

我有三个 viewController

一、二、三

从第二个到打开第三个我用

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

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

[self dismissModalViewControllerAnimated:NO];

但是在 1 秒内我看到 Second 并且我不想看它……我该怎么办?

4

3 回答 3

15

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

-(void)goToFirstView{
        UIViewController *vc = [self parentViewController];
   //     UIViewController *vc = [self presentingViewController]; //ios 5 or later
        [self dismissModalViewControllerAnimated:NO];
        [vc dismissModalViewControllerAnimated:YES];
 }
于 2012-04-18T17:16:58.123 回答
5

第三种模式视图首先是如何被驳回的?也许通过用户触摸“完成”按钮?如果是这样,则它位于您要关闭两者的按钮的处理程序中。

您可以将两者都解雇为:

[self dismissModalViewControllerAnimated: YES];
[self.presentingViewController dismissModalViewControllerAnimated: NO];
于 2012-04-18T16:09:04.237 回答
0

发生这种情况是因为 viewDidAppear 每次在视图出现之前都会被调用,所以一旦它出现,您就将其关闭并消失..

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

 [self.navigationController popToRootViewControllerAnimated:YES];    

EDIT

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

于 2012-04-18T16:41:00.687 回答