UIViewController与UIView - 应该创建子视图?

Chr*_*her 6 iphone cocoa-touch

我试图围绕UIViews和UIViewControllers的角色.如果我以编程方式创建和插入子视图,通常是从视图还是控制器执行此操作?

我真的只是想知道是否有一个约定/模式.在我的示例应用程序中,我在运行时加载了50个图像,将它们作为子视图添加到主视图中,然后让用户将它们拖动到屏幕上.我目前正在视图的initWithCoder中进行所有初始化:

- (id)initWithCoder:(NSCoder*)coder 
{
    if (self = [super initWithCoder:coder]) {
      // load UIImageViews and add them to the subview
    }

    return self;
}
Run Code Online (Sandbox Code Playgroud)

该视图还实现了touchesBegan/touchesMoved以允许拖动.当我尝试在initWithCoder中访问[self frame] .size时出现问题,它似乎尚未初始化.这让我觉得我可能会把图片加载到错误的地方......

Jim*_*uls 7

这取决于你在做什么.如果视图表示"已打包"的内容,则您可以从视图本身创建子视图.如果您只是将视图聚合在一起,那么您应该从视图控制器中进行聚合.

想想传统的封装.您的子视图在概念上是其超级视图的"组成部分",还是仅仅存在于绘图层次结构中?