将UINavigationController添加到基于视图的应用程序

时间:2012-08-29 15:52:30

标签: objective-c xcode uiviewcontroller uinavigationcontroller

因此,我开始在Xcode 3.2.5中以完全基于视图的方式开发应用程序,然后升级到Xcode 4.4。我有一个NIB文件(两个,MainWindow.xib和我的默认视图控制器的.xib)。我有一堆视图控制器,直到现在我一直通过presentModalViewController呈现。

问题在于,现在我希望其中一个视图基于导航,也就是说,当用户输入它时,它们会获得顶部导航栏,并且从那一点开始他们获得的所有内容都是通过导航控制器。当它们完成并完全退出时,它们会回到常规的非导航控制器使用视图。

这似乎是一个普遍的问题,没有人完全描述答案。要么像How to add a navigation controller to a view-based application?那样看似有用的回复对我来说太模糊了。我基本上是在寻找一个逐步解释,说明如何在项目中添加UINavigationController,只显示其中的一些视图。

1 个答案:

答案 0 :(得分:1)

如果您的视图已按预期工作,则向模态视图添加导航控制器非常简单。

NewViewController *newView = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
UINavigationController *navView = [[UINavigationController alloc] initWithrootViewController:newView];
[self presentModalViewController:navView animated:YES];

您的模态视图将继承导航栏和所有属性,以便在该模态中显示更多视图。完成模态后,只需将其解除。

在导航控制器顶部加载更多视图非常简单。

AnotherViewController *anotherView = [[AnotherViewController alloc] initWithNibName:@"AnotherViewController" bundle:nil];
[self.navigationController pushViewController:anotherView animated:YES];

从堆栈中手动弹出视图控制器:

// note, you won't need to call this for the auto created back button, that is handled for you
// this would only be if you wanted manual control over going back outside the back button
[self.navigationController popViewControllerAnimated:YES];

完成模态视图后,您可以从任何地方调用此视图,将其放在视线之外,将您返回到原始视图。方便多个细节屏幕,注册过程等。

[self.navigationController dismissModalViewControllerAnimated:YES];