gpt4 book ai didi

iphone - 使用自定义 View Controller 来管理同一 View 层次结构的不同部分

转载 作者:行者123 更新时间:2023-12-03 18:33:13 25 4
gpt4 key购买 nike

View Controller 编程指南说明了有关 View Controller 的用法:

Each custom view controller object you create is responsible for managing all of the views in a single view hierarchy. In iPhone applications, the views in a view hierarchy traditionally cover the entire screen, but in iPad applications they may cover only a portion of the screen. The one-to-one correspondence between a view controller and the views in its view hierarchy is the key design consideration. You should not use multiple custom view controllers to manage different portions of the same view hierarchy. Similarly, you should not use a single custom view controller object to manage multiple screens worth of content.

我明白,如果我们使用多个自定义 View Controller 来控制 View 的各个部分(即 View Controller 来管理主视图的 subview ,而主视图又由 View Controller 管理),则默认方法如下:

didReceiveMemoryWarnings
viewWillAppear
viewWillDisappear
viewDidUnload

等等。等将不会被调用。

除此之外,还有其他充分的理由说明我们不应该使用多个 View Controller 来管理 View 的各个 subview 吗?

该文档还提供了一种替代解决方案,内容如下:

Note: If you want to divide a view hierarchy into multiple subareas and manage each one separately, use generic controller objects (custom objects descending from NSObject) instead of view controller objects to manage each subarea. Then use a single view controller object to manage the generic controller objects.

但是没有提及为什么不应该首选多个 View Controller 。我的问题是:

为什么我们不应该选择这种方式?

我很担心,因为我更喜欢使用 UIViewController 的子类来管理我的 View ,因为我每次都从 nib 加载它们,并且为每个 View Controller 隔离 nib。满足项目后期阶段的变化变得很容易。这是错误的吗?我是否必须改变我的编程风格,或者我继续采用这种方法可以吗?

谢谢

拉杰

最佳答案

好吧,我会说“只要它有效”,你就可以继续这样做!但为了让事情变得“干净”,我会使用我自己的元素。由于 ViewController 在设计时考虑了其他通用功能(例如使用导航 Controller 和选项卡栏 Controller ),这使得它对于简单的使用来说有点“重”,就像您一样。另外,就像您提到的,只有当 viewController 的 View 添加到主窗口时才会调用某些事件。

您不能在 Interface Builder 中使用您自己的对象吗?如果您创建一个(或多个)UIView IBOutlet,它的工作原理应该是相同的。

关于iphone - 使用自定义 View Controller 来管理同一 View 层次结构的不同部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4333638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com