3

自从 iOS 5.0 带来了 childViewControllers 的概念,它似乎可以做任何事情,我习惯用 UIView 来做,我以前从 xib 文件加载。

我通常会使用 UIView 并让它包含 xib 文件中的所有其他内容的场景。如果需要实现 UIView 用来加载的任何委托和数据源。

使用这样的东西:

 NSArray* nibsArray = [[NSBundle mainBundle] loadNibNamed:@"ABCustomLoginView" owner:self options:nil];
        if(nibsArray && [nibsArray count] > 0)        {
            self = [[nibsArray objectAtIndex:0] retain];
        }

这似乎从来都不是正确的,它曾经打破 MVC。为什么 UIView 会处理另一个 UIView 的事件?

既然 childViewController 就在那里,我是否应该总是制作一个大小合适的 UI 片段,它有自己的功能并且可以在以后重新使用到单独的 UIViewController 中?

还是在某些情况下,以前的方法仍然占上风?

4

1 回答 1

0

当您构建自定义容器视图控制器时,您应该只使用子视图控制器,或者您的布局非常复杂。

现在我的意见是:我总是使用故事板,因为它们允许您在设计时表达整个屏幕,而无需在运行时组装它(如上面的代码)。

因此,即使您选择为每个单独的视图控制器使用故事板(一些大型团队这样做是为了避免合并问题),您也可以将所有视图和视图控制器布局并连接在一起。

如果您希望在运行时创建某个视图的动态数量,我可能只会对视图进行编码,或者如果它非常复杂,我会将 NSNib 存储在 ivar 中并从中实例化每个视图。

底线:子视图控制器绝不会取代或什至与您的代码示例相关,以了解您如何使用它。

于 2013-08-14T14:02:06.053 回答