您好,登錄后才能下訂單哦!
在UIKit中,UIViewController及其子類描述視圖控制器,即一個頁面
本篇文章介紹一下控制器的三種主要創建方式
純代碼創建
即:alloc+init方式,如:
AMViewController * vc = [[AMViewController alloc] init];
從storyboard中加載
a. 創建UIStoryboard對象
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle*)storyboardBundleOrNil
name參數:storyboard文件名,不包含擴展名
storyboardBundleOrNil參數:傳nil即可
b. 從UIStoryboard對象中獲取控制器對象
- (id)instantiateInitialViewController //取出唯一的初始控制器 - (id)instantiateViewControllerWithIdentifier:(NSString *)identifier //按照ID
如:
UIStoryboard * stoyrboard = [UIStoryboard storyboardWithName:@"main" bundle:nil]; //AMViewController *vc = [stoyrboard instantiateInitialViewController]; AMViewController *vc = [stoyrboard instantiateViewControllerWithIdentifier:@"redViewController"];
控制器的ID:在storyboard文件中可以設計多個控制器,每個控制器可以管理一個ID
從xib中加載
xib設計控制器的view,有以下兩種方式:
方法一:
可以在xib中放置控制器,如:
代碼中仍然使用NSBundle的loadNibNamed:從Nib中創建
設計的控制器,同樣可以設置關聯的子類類型
- (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options
name參數:傳遞xib文件的文件名(不帶后綴名)
其余參數傳nil使用默認值即可
返回值:為該xib文件中所有對象的數組,一般一個xib文件只設計一個對象
如:
AMViewController * vc = [[[NSBundle mainBundle] loadNibNamed:@"xxx"] lastObject];
方法二:
在xib中仍然放置一個view,選則xib中的File’s owner ,設置class為控制器子類
右鍵File’s owner,view屬性連線到xib中的view對象
代碼中使用UIViewController的一下init方法從xib中創建其view
- (instancetype)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
nibName參數:xib文件名,不包括后綴名
nibBundle參數:傳nil即可
如:
AMViewController * vc = [[AMViewController alloc] initWithNibName:@"view" bundle:nil];
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。