我已经被困在这几天了,它正在杀了我......在我的viewDidLoad事件中,我试图以编程方式将全屏UINavigationController添加到我的视图控制器的子视图中。到目前为止,我只成功做了两件事......
1)只有灰色屏幕显示
OR
2)我得到的东西类似于添加到视图控制器的导航控制器,而不是我的XIB导航控制器,它只是一个通用的...即使我从XIB加载。奇怪的是,它总是向下移动25个像素并略微切断。
我已阅读谷歌上的每一个链接,我似乎无法弄清楚这一点。我刚刚创建了一个新的viewcontroller ...向它添加了一个UINavigationController ...尝试加载那个视图控制器并且它搞砸了。
非常感谢任何帮助!!!!
答案 0 :(得分:1)
不要让UINavigationController成为其他视图控制器的子节点,而是让UINavigationController成为根控制器本身。导航控制器是特殊的“容器”视图控制器之一,它通常希望拥有整个屏幕并位于控制器层次结构的根部(在某些情况下除外)。
尝试这样的事情:
UINavigationController * rootNavController = [[UINavigationController alloc] initWithRootViewController:myRootControllerInTheNavController];
[window addSubview:[rootNavController view]];
这将使用导航控制器模糊任何现有视图(当您-removeFromSuperview
导航控制器的视图时,那些现有的东西仍然存在。核选项是使用导航控制器设置你的UIWindow的rootViewController
属性,但是从你的评论中可以看出这可能不是你想要做的。
可能是一种更干净的方法:如果它能完成您想要的任务,我相信您也可以使用您的导航控制器并以模态方式呈现它(请参阅uiviewcontroller的文档),无论当前的视图控制器是什么。适当地设置转换,当您在导航堆栈中时,导航控制器将可见。