我是iPhone开发中的新手。我想构建一个首先拥有UIViewController的应用程序,它将有一个按钮。现在点击按钮,它会加载UINavigation控制器。以下是我接近的方式:
我创建了一个UIViewController类,我拿了一个
-(IBAction) PressMeFunc:(id) sender
按下按钮。
然后我创建了一个UIView xib文件。我在IB中完成了所需的步骤。
然后在AppDelegate中,我将ViewController的实例添加为窗口的子视图。
到此为止,没关系。
接下来,如何在按下按钮时加载导航控制器?
我知道如何从基于窗口的应用程序构建一个navigationController项目,但我很难将NavigationController作为UIView的子视图。
非常感谢您的帮助。
答案 0 :(得分:8)
NavigationController设计用于在使用时接管屏幕,因此您必须决定如何管理从原始ViewController到NavigationController的过渡。您可以使用presentModalViewController执行此操作,或者通过处理删除原始视图并以编程方式交换NavigationController。
这是用于以编程方式设置NavigationController的the Apple documentation。
代码看起来像这样(来自Apple的文档):
GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:groupsController];
现在,一旦你创建了NavigationController,并将第一个viewcontroller添加到它,你需要转换到它。您可以使用CATransitions或
执行此操作[myViewController presentModalViewController: navigationController];
答案 1 :(得分:5)
您不应将UIViewController(包括导航)视图作为子视图添加到由另一个视图控制器管理的视图。
以下是相关阅读: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/
在您的情况下,您可以做的是从窗口中删除viewcontroller的视图,然后将导航控制器的视图添加到窗口。
[viewController.view removeFromSuperview];
[window addSubview:navigationController.view];
您也可以将其添加为此处建议的模态视图控制器,或者您可以将第一个视图控制器设置为导航控制器,并在该导航控制器的堆栈上按下第二个导航控制器:
[navigationController pushViewController:secondNavigation animated:NO];
编辑:嘿刚刚注意到我正在回答09问题
编辑#2:这可能与iOS 5和他们添加的UIViewController遏制事物无关,仍然没有机会检查出来,但是如果你正在阅读这个答案,你可能想要强>