因此,我开始在Xcode 3.2.5中以完全基于视图的方式开发应用程序,然后升级到Xcode 4.4。我有一个NIB文件(两个,MainWindow.xib和我的默认视图控制器的.xib)。我有一堆视图控制器,直到现在我一直通过presentModalViewController
呈现。
问题在于,现在我希望其中一个视图基于导航,也就是说,当用户输入它时,它们会获得顶部导航栏,并且从那一点开始他们获得的所有内容都是通过导航控制器。当它们完成并完全退出时,它们会回到常规的非导航控制器使用视图。
这似乎是一个普遍的问题,没有人完全描述答案。要么像How to add a navigation controller to a view-based application?那样看似有用的回复对我来说太模糊了。我基本上是在寻找一个逐步解释,说明如何在项目中添加UINavigationController
,只显示其中的一些视图。
答案 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];