pushViewController后不显示视图

时间:2013-01-07 23:07:48

标签: ios6 uinavigationcontroller pushviewcontroller uistoryboardsegue

我的故事板具有以下布局

                                         MyView1ViewController (root controller)
                                        /
     

ContainerView - > MyNavigationController ---------

                                       \
                                        MyView2ViewController

容器视图嵌入了一个UINavigationController,它具有MyView1ViewController作为根视图控制器。我从UINavigationController创建了一个手动推送到MyView2ViewController的segue。

根据用户输入,显示View1或View2。在此示例中,按钮仅在两个控制器之间切换。如果显示View1(根控制器),则按View2控制器。控制器被推入堆栈但View2永远不会显示。下面列出的代码显示了我如何实现这个:

- (void)transitionToView:(int)type {

if (self.v2Controller == nil) {
    self.v2Controller = (MyView2ViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"View2"];
}

NSLog(@"top=%@", self.topViewController);
NSLog(@"visible=%@", self.visibleViewController);
for (id cntrllr in self.viewControllers) {
    NSLog(@"children=%@", cntrllr);
}

switch (type) {
    case 2:
        **[self pushViewController:self.v2Controller animated:YES];**
        break;

    case 1:
        [self popToRootViewControllerAnimated:YES];
        break;

    default:
        [self popToRootViewControllerAnimated:YES];
        break;
}
for (id cntrllr in self.viewControllers) {
    NSLog(@"after children=%@", cntrllr);
}
NSLog(@"after visible=%@", self.visibleViewController);

}

以下是我在模拟器中运行并运行此代码时的日志消息:

top = MyView1ViewController:0x7425f80

visible = MyView1ViewController:0x7425f80

children = MyView1ViewController:0x7425f80

在children = MyView1ViewController之后:0x7425f80

在children = MyView2ViewController之后:0x10a142c0

在visible = MyView2ViewController之后:0x10a142c0

我的解释是我将View2控制器推到导航堆栈上, 应该是可见的控制器,但View2没有显示。

我看过类似标题的问题,但似乎没有什么适用于我的情况。我的配置有问题吗?我在IB中缺少什么?我是否希望控制器只需通过推送即可显示其视图?任何建议都表示赞赏。

0 个答案:

没有答案