我有3个视图控制器,vcA
,vcB
和vcC
。
我正在vcA
并推送vcB
。它有效。
当我尝试从vcC
推送vcB
时,它会失败。我发现self.navigationController
的{{1}}属性为vcB
。
阅读有关此属性的帮助文件,我看到了:
如果视图控制器未嵌入导航控制器中,则此属性为nil。
因此,nil
可能不在导航控制器内。
我的问题是,vcB
是否足以在导航控制器上嵌入self.navigationController pushViewController:vcB ...
?如果没有,我如何在导航控制器上嵌入vcB
?
注意:vcB
构建于Interface Builder之上,vcA
和vcB
是以编程方式创建的。
答案 0 :(得分:0)
尝试以这种方式定义viewController:
在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];
答案 1 :(得分:0)
3天后我终于解决了这个问题。
这个问题是我的一个viewControllers和navigationController 都连接到委托的rootViewController插座。 感谢Xcode没有指出这一点!很抱歉,我不得不再次说我现在比以往更讨厌Xcode 4.
这个问题的解决方案与我遇到的另一个问题有关,可以在这里看到:https://stackoverflow.com/a/13280574/316469
谢谢你们。