我的故事板具有以下布局
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中缺少什么?我是否希望控制器只需通过推送即可显示其视图?任何建议都表示赞赏。