假設我從nib加載視圖控制器,並決定在場景後面的某個子視圖中執行某些操作。在稍後的時間,我會展示這個視圖控制器的視圖。使視圖(初始化initWithNibName)加載其所有子視圖
viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[viewController.someSubview doSomething];
//later on
[mainView addSubview:viewController.view];
的問題是,該物體someSubview似乎沒有被加載,直到出現視圖,因此該方法doSomething的不被調用。到目前爲止,我的解決方法是調用:
[mainView addSubview:viewController.view];
[viewController.view removeFromSuperview];
首先初始化viewcontroller的子視圖。有沒有更好的方法(比如loadSubviews方法或者其他)來完成這個任務?
謝謝,這做到了。 – iamj4de 2010-01-20 19:33:04
@MarkAmery Apple告訴你不要在文檔中調用-loadView:「你不應該直接調用這個方法,視圖控制器在它的視圖屬性被請求時調用這個方法,但是當前爲nil,這個方法加載或者創建一個視圖,將其分配給視圖屬性。「 – 2013-06-25 07:04:01
@MikeWeller好點 - 我沒有仔細查看文檔,知道這一點。那麼我想我們必須選擇兩個稍微難看的黑客之一。就我而言,我可能會堅持'loadView'只是因爲它更明確,但我承認這不是我認爲的乾淨解決方案。 – 2013-06-26 20:06:23