有些情況下需要動態增加一些子控件。
如果用代碼直接構建子控件,就是比較麻煩。儘量少寫代碼。
所以想到的是用xib文件來實現UIView。
問題是UIView不能直接從xib文件構造。
可以通過寫UIViewController來加載xib。但是缺點是會得到很多小的UIVIewController實例,而實際上我們又不怎麼需要。
xib/nib文件可以通過NSBundle裝載。得到的是一個NSArray。在xib編輯器裏看到的除了File's Owner, First Responder以外的東西都在這個數組裏面。通過這個東西我們可以手動裝載一個UIView進來,並且,在裝載的時候進行xib內容到File's Owner綁定。
通過以下步驟可以完成
1,創建一個UIViewController
2,定義你想要的事件和屬性,並且指定成IBOutlet和IBAction
3,再創建一個xib文件
4,進入這個新的xib文件,編輯File's Owner,將他的類型設置成我們創建的UIViewController
5,從這時候開始UIViewController就對應了兩個xib文件了,這樣我們可以通過編輯器來綁定內容。
6,隨便加一些按鈕,綁定些內容
7,在viewDidLoad方法里加入載入子控件的代碼
- - (void)viewDidLoad {
- [super viewDidLoad];
- NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"sub" owner:self options:nil];
- UIView *subView = [nibViews objectAtIndex:0];
- [self.view addSubview:subView];
- }
8,執行,你會看到子控件被載入到了UIViewController的View裏了。並且,在編輯器裏綁定的內容都是有效的。成功動態增加了UIViewController的內容。