2009-05-23 60 views
1

我加載一個筆尖爲:爲什麼UILabel 0x0?

ContentViewController *theController = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:nil]; 

其上有一個標籤。視圖控制器有一個UILabel的IBOutlet,帶有一個保留和綜合變量的@property。當我從另一個類加載如上所述的筆尖並參考標籤的文本屬性時:

theController.myLabel.text = @"testing..."; 

myLabel的地址爲0x0。在分配之前,文本是「無效的」。賦值後,它的類型是ContentViewController。內存管理存在一些問題。有任何想法嗎?

+0

您在ContentViewController的哪個方法中調用了Controller.myLabel.text= @「testing ...」; ? – 2009-05-23 04:41:30

+0

我不會在ContentViewController中調用它。它正在應用程序的主視圖控制器類中執行。這是一個基於視圖的應用程序。 – 4thSpace 2009-05-23 05:10:08

回答

0

ViewControllers只根據需求加載其視圖。分配中的隱含getMyLabel調用將導致視圖被加載並且插座被連接。至於類型錯誤,我不知道爲什麼myLabel會以ContentViewController類型結束。您應該檢查界面構建器中的連接,並確保它們正確連接。

3

連接不會立即在init調用中進行。直到訪問視圖控制器的view屬性纔會加載主視圖,這會導致您所有其他IBOutlet都被設置。如果您在視圖加載之前嘗試訪問IBOutlet,則它將爲零。一般來說,分配代碼應該進入-viewDidLoad。如果您需要添加視圖到屏幕前做一些事情,只是任何IBOutlets的分配任何東西之前訪問視圖:

theController.view; 
theController.myLabel.text = @"testing..."; 
0

爲U寫任何代碼,

-(void)loadView { } 

方法?

如果是這樣,IBOutlet對象沒有得到分配。
嘗試評論此功能。
如果你需要這個函數被觸發,調用loadNibnamed:調用該viewController的方法。

相關問題