从UIViewController加载一个UINavigationController作为子视图

7

我是一个iPhone开发新手。我想创建一个应用程序,首先会有一个UIViewController,其中包含一个按钮。现在点击按钮后,它应该加载一个UINavigation控制器。这是我的实现方法:

  1. i created a UIViewController class, where i took a

    -(IBAction) PressMeFunc:(id) sender
    

    for the button to be pressed.

  2. Then i created a UIView xib file.I did the required steps in the IB.

  3. Then in the AppDelegate, i added the ViewController's instance as a Subview of the window.

到目前为止,一切都好。

接下来,我如何在按下按钮时加载一个导航控制器?

我知道如何从基于窗口的应用程序构建一个navigationController项目,但是我在将NavigationController作为UIView的子视图时遇到了困难。

非常感谢您的帮助。

2个回答

8
导航控制器被设计为在使用时接管屏幕,因此您需要决定如何从原始视图控制器管理过渡到导航控制器。您可以通过presentModalViewController实现这一点,或者通过编程处理删除原始视图并交换导航控制器来实现。
这里是用于编程设置导航控制器的苹果文档
代码将类似于以下内容(来自苹果的文档):
GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:groupsController];

现在,一旦您创建了NavigationController,并将其第一个视图控制器添加到其中,您需要过渡到该视图控制器。您可以使用CATransitions或其他方法实现。
[myViewController presentModalViewController: navigationController];

谢谢Mark的快速回复。我已经下载了你提到的苹果文档。我会仔细阅读并尝试从UIViewController加载NavigationController;尽管我不知道presentModalViewController是什么。实际上,我想要在UIViewController中点击一个按钮后,在NavigationController中加载一个xml文件。 问候,Xcodermi2 - XcoderMi2
2
这是苹果的耻辱,除非您只将uinavigationcontroller添加到主窗口,否则会出现许多问题,他们至少应该在文档中做个说明。 - valexa

5
您不应该将UIViewController(包括导航)的视图作为另一个视图控制器管理的视图的子视图添加。
以下是相关阅读: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ 在您的情况下,您可以从窗口中删除视图控制器的视图,然后将导航控制器的视图添加到窗口中。
[viewController.view removeFromSuperview];
[window addSubview:navigationController.view];

你也可以将其添加为模态视图控制器,如此处所建议的那样,或者你可以将第一个视图控制器作为导航控制器,并在该导航控制器的堆栈上推送第二个导航控制器:

[navigationController pushViewController:secondNavigation animated:NO];

编辑:嘿,我刚注意到我在回答一个09年的问题。

编辑2:这可能与iOS 5和他们添加的UIViewController包含事物无关,我还没有机会去检查它,但如果你正在阅读这个答案,你可能想要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接