簡體   English   中英

如何加載XIB?

[英]How to load an XIB?

我有一個帶2個屏幕的應用程序(MainViewController和AboutViewController)。 用戶單擊按鈕后,我想加載AboutViewController屏幕,該屏幕在另一個XIB中定義。

看起來很簡單,但我今天似乎無法找到我的谷歌。 我怎么把它關掉?

當你調用[AboutViewController init] ,它應該調用某種形式的[super init] ,它是[UIViewController init]的同義詞。 發生這種情況時,視圖控制器將自動查找名為(在您的情況下) AboutViewController.xib的nib文件。 如果找到該文件,則會將其內容加載到視圖控制器中。

基本上,您需要做的就是初始化視圖控制器,並確保它與關聯的nib文件具有相同的名稱。

如果要將具有不同名稱的nib文件加載到視圖控制器中,可以顯式調用initWithNibName:bundle: :,使用您喜歡的任何nib文件的名稱。

如果標准init(具有相同名稱的nib文件)不適合您,您可以檢查幾件事。

  • 類名的拼寫與nib文件的拼寫(和大小寫)相同
  • nib文件包含在項目中,而不只是位於同一目錄中
  • 你的UIViewController子類的init方法也調用[super init]
  • 你正在調用你的UIViewController子類的init方法
  • 你確實讓你的視圖控制器的視圖可見

使用“關於”屏幕,您可能只想顯示視圖然后將其關閉。 因此,您可以只覆蓋當前視圖,而不是使用全新的視圖控制器。

假設你有一個伊娃

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

NSBundle loadNibNamed:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM