应该停止从xibs加载UIView吗?

时间:2013-08-02 10:09:12

标签: ios objective-c cocoa-touch

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

Scenario是我通常使用UIView并让它包含xib文件中的所有其他内容的地方。如果需要实现UIView用于加载的任何Delegate和DataSource。

使用这样的东西:

 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?

或者在某些情况下,上一个方法仍有上风?

1 个答案:

答案 0 :(得分:0)

在构建自定义容器视图控制器时,您应该只使用子视图控制器,否则布局非常复杂。

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

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

如果你想在运行时创建一个特定视图的动态数字,我可能只是编写视图代码,或者如果它非常复杂,我会在一个ivar中存储一个NSNib并从中实例化每个视图。 / p>

底线:子视图控制器绝不会替换或甚至与您使用它的代码示例相关。