我有一個2屏幕(MainViewController和AboutViewController)的應用程序。當用戶點擊一個按鈕時,我想加載在另一個XIB中定義的AboutViewController屏幕。如何加載XIB?
似乎很簡單,但我今天似乎無法找到我的google-fu。我該如何解決這個問題?
我有一個2屏幕(MainViewController和AboutViewController)的應用程序。當用戶點擊一個按鈕時,我想加載在另一個XIB中定義的AboutViewController屏幕。如何加載XIB?
似乎很簡單,但我今天似乎無法找到我的google-fu。我該如何解決這個問題?
當你調用[AboutViewController init]
,它的預期調用某種形式的[super init]
,這是[UIViewController init]
的代名詞。發生這種情況時,視圖控制器會自動尋找名爲(在你的情況下)AboutViewController.xib
的nib文件。如果它找到該文件,它會將它的內容加載到您的視圖控制器中。因此,基本上,您只需要初始化視圖控制器,並確保其與關聯的nib文件具有相同的名稱。
如果您想在您的視圖控制器中加載具有不同名稱的筆尖文件,您可以明確地調用initWithNibName:bundle:
,並選擇您喜歡的任何一個nib文件的名稱。
如果標準init(具有相同名稱的nib文件)不適合您,那麼您可以檢查幾件事情。
UIViewController
子類的init方法並還呼籲[super init]
UIViewController
子類的init方法一個NSBundle loadNibNamed:
With a About屏幕,您可能只想顯示一個視圖然後關閉它。因此,而不是使用全新的視圖控制器,您可以覆蓋當前的視圖。
假設你有伊娃
UIView *aboutUsView;
與相應的屬性。
在您的視圖控制器做:
[[NSBundle mainBundle] loadNibNamed:@"AboutUsView" owner:self options:nil]; // Retains top level items
[self.view addSubview:aboutUsView]; // Retains the view
[aboutUsView release];
要刪除的觀點,說在連接到該視圖一個按鈕的操作,這樣做:
[aboutUsView removeFromSuperview], aboutUsView = nil; // Releases the view
他特別說他有兩個視圖控制器,「MainViewController和AboutViewController」不是視圖控制器和視圖。 – mahboudz 2009-09-21 03:26:47
正確。我特別說過,他可能不需要他們兩人來達到他所說的目標。 – 2009-09-24 03:56:23
這似乎是明顯的方法。 – user1432813 2012-07-19 14:43:41
我不知道XIBs是自動加載喜歡這個。謝謝! – DOOManiac 2011-08-09 04:01:12