2012-02-02 203 views
0

我编写了一个简单的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未在窗口中加载。 这是怎么回事?

回答

4

因为如果您没有设置视图控制器的视图属性,那么视图控制器的视图为零,而无视图意味着空白屏幕。

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

当您首次引用其视图属性时,通常视图控制器会创建它们自己的空视图(或从nib文件加载它),但由于您重写了loadView方法,因此必须自行设置视图。

您的代码可能会更容易理解,如果这样写的 - 具有相同的名称可能是你的问题的根源的观点变量和视图属性:

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

顺便说一句,如果你不使用ARC ,你需要在将它分配给self.view之前自动释放上面的UIView,否则你会泄漏。

+1

想要指出'greyColor'不适合我,但'grayColor'没有。干杯! – joshtronic 2014-03-30 14:22:15