2011-01-24 104 views
3

我想添加一個「自定義」的UIView到一個UIViewController,我用XIB1其從視圖控制器單獨創建這個自定義視圖,添加的UIView上的UIViewController

沒有人知道如何添加一個UIView有xib到uiviewcontroller中?

提前感謝

回答

3

你的意思是一個額外的觀點,而不是主控制器的看法?在這種情況下,你可以聲明爲視圖屬性,並用手工加載NIB:

@interface Controller {} 
@property(retain) IBOutlet UIView *extraView; 
@end 

… 

- (void) viewDidLoad // or anywhere else 
{ 
    [[NSBundle mainBundle] loadNibNamed:@"extras" owner:self options:nil]; 
    NSAssert(extraView != nil, @"The extra view failed to load."); 
    [[self view] addSubview:extraView]; 
} 

這假定您設置Controller作爲界面生成器文件的所有者和您鏈接視圖到extraView出口。另外請注意,可能會有更優雅的解決方案,比如將額外視圖插入控制器的主要NIB中;取決於情況。

+0

對不起,沒有更多的描述。 所以我有一個AControlloer.h.m然後我創建BView.h.m連同一個NIB文件。 因此,無論何時我想加載te控制器我想添加這個BView作爲子視圖。 – tosi 2011-01-24 17:02:30

1

它看起來像你想要的最常見的場景 - 只需將初始化的自定義UIView子類加載到控制器中。

  1. 在Xcode新建文件嚮導中創建一個名爲「View XIB」的新XIB。
  2. 在界面生成器中選擇文件所有者對象,並在對象檢查器(Cmd-4)的對象標識選項卡中輸入Controller(或者您的控制器類被命名)到類字段中。
  3. 對視圖做同樣的處理,輸入視圖類的名稱。
  4. Ctrl +從文件所有者拖動到視圖,您應該能夠將視圖連接到控制器上定義的視圖插座。
  5. 保存,比如Controller.xib
  6. 在您的代碼中,使用initWithNibName:@"Controller" bundle:nil初始化控制器。初始化代碼應爲您加載接口並將視圖屬性設置爲從接口文件解壓縮的視圖。

通過一些Interface Builder教程,IB是一個非常不錯的工具,熟悉它很好。