iOS - 在 navigationController 上嵌入 viewController
Posted
技术标签:
【中文标题】iOS - 在 navigationController 上嵌入 viewController【英文标题】:iOS - embedding a viewController on a navigationController 【发布时间】:2012-11-06 15:07:54 【问题描述】:我有 3 个视图控制器,vcA
、vcB
和 vcC
。
我在vcA
并推送vcB
。它有效。
当我尝试从vcB
推送vcC
时,它失败了。我看到vcB
的self.navigationController
属性是nil
。
阅读有关此属性的帮助文件,我看到:
如果视图控制器没有嵌入到导航控制器中,则此属性为零。
所以,vcB
可能不在导航控制器内部。
我的问题是,self.navigationController pushViewController:vcB ...
是否足以在导航控制器上嵌入vcB
?如果没有,我如何在导航控制器上嵌入vcB
?
注意:vcA
是基于 Interface Builder 构建的,vcB
和 vcC
是通过编程方式创建的。
【问题讨论】:
你能贴一些代码吗?从概念上讲,这听起来像是你做对了。我假设vcA
最初是通过被推送到导航控制器的视图堆栈来显示的。
好的,但我的问题是:我在导航控制器上嵌入了 vcA,这是在界面生成器中完成的。现在,如何在导航控制器上嵌入第二个视图控制器 (vcB)?此 vcB 是在 vcA 内以编程方式创建的。
是的,您可以使用 pushViewController 方法推送其他控制器,但显示您的代码以查看问题所在。
你不是在 vcB 中创建一个名为 navigationController 的属性吗?
如果您确实找到了,请记得在此处发布您的修复,以便我们知道发生了什么。如果你找不到,我很乐意私下看看,如果你能分享的话。
【参考方案1】:
尝试以这种方式定义您的 viewController int:
在vcA中定义vcB
@property (nonatomic, strong) UIViewController *vcB;
@synthesize vcB = _vcB;
然后将其压入堆栈。
[self.navigationController pushViewController:self.vcB animated:YES];
在vcB中定义vcC
@property (nonatomic, strong) UIViewController *vcC;
@synthesize vcC = _vcC;
然后将其压入堆栈。
[self.navigationController pushViewController:self.vcC animated:YES];
【讨论】:
【参考方案2】:3天后,我终于解决了这个问题。
这个问题是我的viewController 和navigationController 之一都 连接到委托的rootViewController 插座。 感谢 Xcode 没有指出这一点!抱歉,我不得不再说一遍,我现在比以往任何时候都更讨厌 Xcode 4。
这个问题的解决方案与我遇到的另一个问题有关,可以在这里看到:https://***.com/a/13280574/316469
谢谢大家。
【讨论】:
以上是关于iOS - 在 navigationController 上嵌入 viewController的主要内容,如果未能解决你的问题,请参考以下文章
iOS: NavigationController: BarBackButtonItem 影响宽度
iOS7 NavigationController 右滑手势问题
IOS。如何在 .xib 中嵌入 NavigationController?
iOS:在 iPad 上创建 NavigationController 灯箱
当 navigationController 弹出时,iOS WKWebView 在 ios 8 和 ios 9 上崩溃