0

这里有一堆相关的问题,但没有一个感觉像一个简洁或正确的答案。情况如下:

我正在创建一个新的 ViewController 并且不想使用 nib 文件。我对Apple 文档的理解是,如果我不想使用 nib,我应该实现 loadView 来手动创建自己的视图层次结构。

但是,我不清楚我应该如何正确地实例化 self.view 与适当的边界(鉴于此视图控制器可能在许多不同的情况下使用,将其简单地设置为屏幕边界感觉不对)。

不知何故,默认的 UIViewController loadView 似乎确实正确地启动了帧大小,但不清楚我是否正在编写自己的版本,我应该做什么来做到这一点。

4

2 回答 2

1

没有必要实施loadView。相反,实现viewDidLoad并创建和添加您想要的任何和所有所需的子视图。只需将它们添加到默认值self.view

如果要添加填充视图控制器视图的视图,请执行以下操作:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *someView = [[UIView alloc] initWithFrame:self.view.bounds];
    someView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:someView];
}
于 2013-02-26T20:28:07.220 回答
0

在 loadView 中,您应该设置 viewController 的视图属性,仅此而已。添加子视图应该在 viewDidLoad 中完成。

- (void)loadView {
    self.view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 80, 40)]; 
}

Roopesh Chander 有一篇关于选择哪种策略的有趣博客文章:用于程序化 UI 设置的 loadView 与 viewDidLoad。他建议在 loadView 而不是 viewDidLoad 中设置框架以获得最大效率。

于 2017-03-30T10:20:23.417 回答