我不应该覆盖 - [UIViewConvtroller视图]?

时间:2012-08-20 21:00:53

标签: objective-c uiview uiviewcontroller uikit subclassing

我被告知永远不要覆盖-(UIView *)view。为什么不?我想为自定义UIViewController使用自定义UIView子类。有什么更好的方法呢?

2 个答案:

答案 0 :(得分:3)

你不应该覆盖-view。要完成所需的行为,可以将视图控制器设置为从笔尖加载,也可以覆盖-loadView方法。在后一种方法中,您可以创建所需的任何视图,并将其分配给self.view

答案 1 :(得分:1)

如果您正在使用笔尖或故事板,只需将根视图的类设置为新的自定义UIView子类。如果您没有使用nib或情节提要板,请在-loadView方法中创建自定义子类,并将视图控制器的view属性设置为它。因此,例如,如果您有一个名为UIView的自定义MyView子类,并且您在代码中创建它(不是在笔尖或故事板中),那么您可以执行以下操作:

// This code sample assumes compiling with ARC
- (void)loadView
{
  // You should adjust the initial frame to be whatever's appropriate for this
  // view controller
  MyView* view = [[MyView alloc] initWithFrame:CGRectMake(0, 0, 360, 480)];
  [self setView:view];
}