2013-05-01 86 views
11

我有一个视图控制器B被推送到根视图控制器A的导航堆栈,并且此视图控制器B需要显示一个替代视图,如果它模型处于特定状态,所以它模态地呈现另一个视图控制器C.当我关闭视图控制器CI时,如果它也在导航堆栈上,也想弹出视图控制器B.我想这样做只有一个过渡。ios:如何解除模式视图控制器,然后弹出推视图控制器

任何想法?

+0

您是使用xib还是故事板来布置视图?这听起来像你最好的选择可能是在你的根视图控制器中实例化第三视图,然后将它们添加为子视图。这些可以被显示或隐藏。这可以比提出和解除模态视图更加灵活。 – ninehundredt 2013-05-01 01:50:39

+0

即时通讯使用故事板,我倾向于使用一个单独的视图控制器来显示替代状态,因为苹果文档提到,如果你有一个可供选择的界面来显示,那么它的价值将呈现为一个单独的视图(它在讨论独立的景观视图)。我认为我需要的实际UI变化会更容易通过单独的视图来实现,这在目前的视图中是不会隐藏的,所以我会尝试一下你的建议 – Heisenberg 2013-05-01 18:05:28

回答

18

在发布的场景中,视图控制器C的呈现视图控制器实际上是导航控制器,因此您可以要求它弹出B,然后解散自己。此代码是在视图控制器C:

-(IBAction)goBackToA:(id)sender { 
    [(UINavigationController *)self.presentingViewController popViewControllerAnimated:NO]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

如果您使用的是故事板,你可以做同样的事情,与开卷赛格瑞跳直接回A。

+0

谢谢,给了我一些想法之后,我认为我需要的可能更容易使用just一个视图控制器,并根据模型状态更改其子视图,如果我需要使用2个独立视图控制器,我会尝试您的方法 – Heisenberg 2013-05-01 18:06:44

+0

正是我需要的! – Nerrolken 2015-06-27 20:17:11

相关问题