0

我的故事板具有以下布局

                                         MyView1ViewController (root controller)
                                        /

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

                                       \
                                        MyView2ViewController

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

根据用户输入,显示 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);

}

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

顶部 = MyView1ViewController:0x7425f80

可见=MyView1ViewController:0x7425f80

儿童=MyView1ViewController:0x7425f80

在 children=MyView1ViewController: 0x7425f80 之后

在 children=MyView2ViewController: 0x10a142c0 之后

可见后=MyView2ViewController: 0x10a142c0

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

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

4

0 回答 0