Iphone ios编程中在UIView之间切换的正确方法

Iphone ios编程中在UIView之间切换的正确方法,iphone,objective-c,ios,Iphone,Objective C,Ios,大家好 我是一名新的ios程序员,当我必须切换应用程序的页面时,我面临着许多疑问 术语“页面”指的是用一些小部件(按钮、文本框、表格等)填充整个屏幕的UIView 据我所知,我应该使用UIViewController来管理这些页面 因为每个页面都应该是一个屏幕的内容 我的应用程序以一个带有许多按钮的ViewScroller开始,当用户单击其中一个按钮时,它会打开一个新页面 第一个页面是连接到窗口根控制器的UIView 到目前为止,为了打开新页面,我向RootController添加了一个子控制器

大家好

我是一名新的ios程序员,当我必须切换应用程序的页面时,我面临着许多疑问

术语“页面”指的是用一些小部件(按钮、文本框、表格等)填充整个屏幕的UIView

据我所知,我应该使用UIViewController来管理这些页面 因为每个页面都应该是一个屏幕的内容

我的应用程序以一个带有许多按钮的ViewScroller开始,当用户单击其中一个按钮时,它会打开一个新页面

第一个页面是连接到窗口根控制器的UIView

到目前为止,为了打开新页面,我向RootController添加了一个子控制器,并将其视图作为RootController视图的子视图:

RicLocaliController = [[RicercaLocaliViewController alloc] initWithNibName:@"RicercaLocaliViewController" bundle:nil];

[self addChildViewController:RicLocaliController];

[RicLocaliController didMoveToParentViewController:self];        

[self.view addSubview:RicLocaliController.view];

RicLocaliController.view.frame = self.view.bounds;
当用户单击“后退”按钮时,我将移除子控制器和子视图

沿着这条路走下去,我会看到一个动态的控制器树,上面有它们的视图

到目前为止,我还没有遇到任何问题,我的应用程序可以升级到树中的第三级并返回。当方向改变时,每个页面的行为都正确

但我担心,为每个子页面添加一个子控制器和一个子视图可能不是正确的做法

我担心如果我在方向改变时嵌套了很多页面,应用程序的响应可能会很慢,因为SuperView也会做一些事情来管理这个事件

所以我想知道的是,我所做的是否完全没有意义,是否应该使用导航控制器或其他方式来管理我的页面更改

不幸的是,我的老板没有给我足够的时间好好研究这个主题,因此我希望得到一个建议,尽可能使用框架提供的最标准、最不复杂的组件,而不是最新的功能,来遵循最佳解决方案

我读了很多关于这个主题的网页,但在我看来,有很多方法可以管理导航页面,这让我感到困惑


很抱歉我的英语不好,但是我累了,英语不是我的第一语言。

你必须做一些学习。以后你会花更多的时间来解决你所有的问题,否则。。。但是,这里有一些提示

使用嵌套的ViewController会导致各种各样的问题,因此如果时间不够,请跳过这一步

将每个“页面”视为一个ViewController。ViewController有一个名为View的属性,但实际上它只是整个视图层次结构的俯视图。视图是任何可视对象(如标签、按钮等)的基类。所有视图都可以有子视图,因此您可以在标签等下添加图像,如果您愿意,还可以执行更复杂的操作。我说这句话只是为了让你自由思考如何使用视图

现在,ViewController应该保留一个视图层次的代码。该视图层次结构仅适用于该视图控制器

当用户想要导航到另一个页面时,您有几种选择:

NavigationViewController-当用户想要深入研究数据时,应该使用它,例如打开列表中项目的详细视图等。NavigationViewController为您提供后退按钮、正确动画等帮助。您可以“弹出”viewcontroller以返回一个级别。如果用户单击后退按钮,这是自动的

TabBarViewController-如果希望在屏幕底部有一个选项卡栏,请使用它。每个选项卡都连接到一个具有自己的视图层次结构的ViewController

PushModal-如果您在ViewController中,只需要从用户那里获取一些数据,而这不是应用程序正常导航的一部分,那么您可以以Modal方式推送新的ViewController。这是您与iOS内置ViewController交互的方式。这也是从视图控制器获取值的好方法


给你。去了解更多信息。:)

你必须做一些学习。以后你会花更多的时间来解决你所有的问题,否则。。。但是,这里有一些提示

使用嵌套的ViewController会导致各种各样的问题,因此如果时间不够,请跳过这一步

将每个“页面”视为一个ViewController。ViewController有一个名为View的属性,但实际上它只是整个视图层次结构的俯视图。视图是任何可视对象(如标签、按钮等)的基类。所有视图都可以有子视图,因此您可以在标签等下添加图像,如果您愿意,还可以执行更复杂的操作。我说这句话只是为了让你自由思考如何使用视图

现在,ViewController应该保留一个视图层次的代码。该视图层次结构仅适用于该视图控制器

当用户想要导航到另一个页面时,您有几种选择:

NavigationViewController-当用户想要深入研究数据时,应该使用它,例如打开列表中项目的详细视图等。NavigationViewController为您提供后退按钮、正确动画等帮助。您可以“弹出”viewcontroller以返回一个级别。如果用户单击后退按钮,这是自动的

TabBarViewController-如果希望在屏幕底部有一个选项卡栏,请使用它。每个选项卡都连接到一个具有自己的视图层次结构的ViewController

PushModal-如果您在ViewController中,只需要从用户那里获取一些数据,而这不是应用程序正常导航的一部分,那么您可以以Modal方式推送新的ViewController。这是您与iOS内置ViewController交互的方式。这也是从视图控制器获取值的好方法


给你。去了解更多信息。:)

听起来,对于您正在使用的内容,您应该使用导航控制器。这将自动处理将视图推送到堆栈上,然后稍后再次弹出视图的操作。这也将在导航栏中自动创建后退按钮(可自定义)

如果您使用的是iOS 5或6,我强烈建议您试用“