以编程方式创建视图

时间:2012-02-02 10:27:17

标签: objective-c ios

我写了一个简单的ios应用程序。我的所有视图都是以编程方式创建的。 这是一些代码

rootViewController.m

-(void)loadView
{
  UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
  self.view = view;
  self.view.backgroundColor = [UIColor greyColor];
}

在appDelegate中,我将rootViewController视图添加到窗口,一切正常。但如果表达

self.view = view

被删除rootViewController未加载到窗口中。 为什么会这样?

1 个答案:

答案 0 :(得分:4)

因为如果你没有设置视图控制器的视图属性,那么视图控制器的视图是nil,而nil视图意味着一个空白屏幕。

如果您尝试使用零视图显示视图控制器,您会发生什么?

通常,视图控制器在您第一次引用其视图属性时会创建自己的空视图(或从nib文件加载它),但由于您要覆盖loadView方法,因此必须自己设置视图。

如果这样编写,您的代码可能更容易理解 - 具有相同名称的视图变量和视图属性可能是您混淆的原因:

-(void)loadView
{
  self.view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
  self.view.backgroundColor = [UIColor grayColor];
}

顺便提一下,如果您不使用ARC,则需要在将其分配给self.view之前自动发布上面的UIView,否则您将发生泄漏。

相关问题