7

我是 iPhone 开发的新手。我想构建一个应用程序,它首先有一个 UIViewController,它会有一个按钮。现在点击按钮,它会加载一个 UINavigation 控制器。这是我的接近方式:

  1. 我创建了一个 UIViewController 类,在那里我拿了一个

    -(IBAction) PressMeFunc:(id) sender
    

    用于按下按钮。

  2. 然后我创建了一个 UIView xib 文件。我在 IB 中完成了所需的步骤。

  3. 然后在 AppDelegate 中,我将 ViewController 的实例添加为窗口的子视图。

到此为止还可以。

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

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

非常感谢您的帮助。

4

2 回答 2

8

NavigationController 旨在在使用时接管屏幕,因此您必须决定如何管理从原始 ViewController 到 NavigationController 的转换。您可以使用 presentModalViewController 执行此操作,或者通过处理删除原始视图并以编程方式交换 NavigationController 来执行此操作。

这是以编程方式设置 NavigationController的 Apple 文档。

代码看起来像这样(来自 Apple 的文档):

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease];
UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:groupsController];

现在,一旦您创建了 NavigationController,并将其第一个视图控制器添加到其中,您需要过渡到它。您可以使用 CATransitions 或使用

[myViewController presentModalViewController: navigationController];
于 2009-05-01T16:55:03.637 回答
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 容器无关,仍然没有机会检查它,但如果你正在阅读这个答案,你可能想要。

于 2011-07-04T13:12:25.047 回答