iphone - ios编程中切换UIViews的正确方法

标签 iphone objective-c ios

大家好

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

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

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

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

第一页是连接到Window的RootController的UIView。

到目前为止,为了打开新页面,我向 RootController 添加了一个子 Controller ,并将其视为 RootController View 的 subview :

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

[self addChildViewController:RicLocaliController];

[RicLocaliController didMoveToParentViewController:self];        

[self.view addSubview:RicLocaliController.view];

RicLocaliController.view.frame = self.view.bounds;

当用户单击“后退”按钮时,我会删除子 Controller 和 subview 。

沿着这条路走下去,我会得到一个动态的 Controller 树及其 View 。

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

但我担心为每个子页面添加一个子 Controller 和一个 subview 可能不是正确的做法。

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

所以我想知道我正在做的事情是否完全没有意义,我是否应该使用导航 Controller 或其他一些方式来管理我的页面更改。

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

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

我为我的糟糕英语道歉,但我很累,英语不是我的第一语言。

最佳答案

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

使用嵌套的 ViewController 会导致各种麻烦,所以如果你时间不够,请跳过它。

将每个“页面”视为一个 ViewController。 ViewController 有一个名为 View 的属性,但它实际上只是整个 View 层次结构的顶层 View 。 View 是任何视觉对象的基类,如标签、按钮等。所有 View 都可以有 subview ,因此您可以在标签下添加图像等,如果您愿意,可以做一些非常奇怪的事情。我这么说只是为了让您在如何使用 View 方面解放思想。

现在,ViewController 应该将代码保存到一个 View 层次结构中。该 View 层次结构仅适用于该 View Controller 。

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

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

TabBarViewController - 如果您想要在屏幕底部显示标签栏,请使用它。每个选项卡都连接到一个 ViewController,它有自己的 View 层次结构。

PushModal - 如果您在 ViewController 中并且只需要从用户那里获取一些数据,这不是应用程序正常导航的一部分,您可以模态地推送一个新的 ViewController。这是您与内置于 ViewController 的 iOS 交互的方式。这也是从 View Controller 获取值的好方法。

给你。去了解更多。 :)

关于iphone - ios编程中切换UIViews的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12100457/

相关文章:

iphone - 使用 loadHTMLString 在 drawRect 中渲染 UIWebView

iphone - 使用应用程序时禁用通知声音和振动

objective-c - UIButton 在隐藏时不起作用

ios - 在 Xcode 7 中更改了 +load 方法顺序

ios - Expo - 减少 iOS 设备上的 PDF 文件大小

ios - messageUI.framework 对发图片有用吗?

iphone - 单元格图像仅在滚动后出现

iphone - UIView opaque 属性在实现 drawRect 时被忽略 :

ios - 如何获取 UIImagePicker 选中的图片名称?

ios - 对于IOS,如何使用vImage将ARGB图像转换为灰度图像