2012-02-02 201 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