2010-06-25 55 views
0

我一直坚持这几天,现在它正在杀死我...在我的viewDidLoad事件,我试图以编程方式将全屏UINavigationController添加到我的视图控制器的子视图。到目前为止,我只成功地做两件事情......Iphone的UIViewController以UINavigation控制器编程

1)只有一个灰色的屏幕显示出来

2)我得到的东西,类似于添加到视图控制器导航控制器,而不是被我的导航控制器从XIB它只是一个通用的...即使我从XIB加载。奇怪的是,它总是向下移动25个像素并略微切断。

我已阅读谷歌上的每一个链接,我似乎无法弄清楚这一点。我刚刚创建了一个新的viewcontroller ...向它添加了一个UINavigationController ...尝试加载该视图控制器并弄乱了它。

任何帮助非常感谢!

回答

1

而不是让UINavigationController成为某个其他视图控制器的子视图,请将UINavigationController作为根控制器本身。导航控制器是特殊的“容器”视图控制器之一,它通常希望拥有整个屏幕并位于控制器层次结构的根部(除了在某些情况下)。

尝试是这样的:

UINavigationController * rootNavController = [[UINavigationController alloc] initWithRootViewController:myRootControllerInTheNavController]; 
[window addSubview:[rootNavController view]]; 

这将混淆导航控制器的任何现有的意见(那些存在的事物仍然会存在,当你-removeFromSuperview导航控制器的视图)。核选项是用导航控制器设置你的UIWindow的rootViewController属性,但是从你的评论听起来这可能不是你想要在这里做的。可能更清晰的方法:如果它完成了你想要的任务,我相信你也可以拿你的导航控制器,并从当前视图控制器的任何模态展示它(参见uiviewcontroller的文档)。适当地设置转换,当您在导航堆栈中时,导航控制器将可见。

+0

我的整个应用程序不依赖于这个控制器...只是几页。你如何去做它的根?我需要从拥有该屏幕的控制器手中控制它,我猜? – 2010-06-25 15:42:26

+0

(查看更新...) – 2010-06-25 15:54:37

+0

非常感谢! prsenting模态是正是我想做的事情,但它是什么给我一个灰色的屏幕...让我告诉你一段代码: LiteViewController * lite = [[LiteViewController alloc] initWithNibName:@“LiteViewController”bundle:nil]; [self presentModalViewController:lite animated:YES]; LiteViewController是我的控制器与我的UINavigationController ...它没有附加窗口或视图 - 它只有一个子视图连接,而不是主要的....也许这就是为什么它会灰色。 – 2010-06-25 16:09:29

相关问题