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