【发布时间】:2015-05-13 15:45:44
【问题描述】:
我知道 iOS 开发中的常见做法是在屏幕上显示一个 UIViewController,其视图是从 XIB 加载的,其中包含所有 UIView 子类。
当我在为应用程序开发一个非常复杂的小部件时,我决定将小部件作为 UIViewController 的子类而不是 UIView。这是因为我认为 UIViewController 本质上是一个带有一些辅助方法的 UIView。然后我可以为它创建一个 XIB(我知道 UIView 也可以有自己的 XIB),加载它包含的视图,将 ITS 视图放置在呈现的父 VC 的视图中,然后进行布局。
到目前为止,这工作得很好,但我想知道这是否是不好的做法,我是否应该只继承一个 UIView 并给它一个普通的 NSObject 控制器。我看到了一些问题,我想知道是否有人可以解决我对这种方法的担忧?
编辑注意:小部件 VC 与它所在的 VC 视图无关,可在任何屏幕上重复使用。所以答案不是用父 VC 子类化小部件 VC。小部件位于父 VC 内部,但它不是父 VC。
编辑注 2:我没有使用 Storyboard。只有自动布局、XIB 和 ARC。
为什么我们不能在 VC 中拥有 VC?
1) 能否将 VC 简单地放入 ANOTHER VC 的 XIB 并作为子视图轻松加载?
2) 我在这里读到:When to use a UIView vs. a UIViewController on the iPhone?
上面的答案解释了 VC 如何控制屏幕的旋转和重新布置子视图,所以如果你添加另一个 VC,那么系统会自动认为那是主 VC,并会尝试旋转它,导致问题。这是真的?或者他只是在谈论你是否以某种方式进入了“展示”了 2 个 VC 的状态?我不确定他的回答是否适用于其他 VC 视图的 SUBVIEWS 的 VC 视图。
3) 一般来说,这是一种好的做法吗?这当然看起来更合理,因为它使加载子视图 VC 的视图更加容易。
谢谢!
【问题讨论】:
标签: ios iphone uiviewcontroller xib subview