麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

[iOS基礎控件-6.11.1]-控制器&控制器view

2019-11-14 19:43:56
字體:
來源:轉載
供稿:網友
A.控制器的創建
控制器常見的創建方式有以下幾種
通過storyboard創建

直接創建
1 ViewController *vc = [[ViewController alloc] init];
     xib設置了class后,當xib的文件名跟controller類名一樣的時候,用這個方法默認就會加載xib中的controller
 
指定xib文件來創建
1 ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
 
1.從storyboard中創建
(1)創建一個Empty application (不帶storyboard)
Image(193)
 
(2)創建window并加到screen上
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {2     // 手動添加window到screen3     self.window = [[UIWindow alloc] init];4     self.window.frame = [[UIScreen mainScreen] bounds];5     self.window.backgroundColor = [UIColor grayColor];6     [self.window makeKeyAndVisible];7     return YES;8 }
 
(3)創建一個storyboard,拖入一個controller
Image(194)
 
Image(195)
 
 
 
 
(4)取出storyboard(其實就是相當于xib)
1     // 2.取得stroyboard2     UIStoryboard *sb = [UIStoryboard storyboardWithName:@"mysb" bundle:nil];
 
(5)設置storyboard上controller為rootViewController
 
 
有兩種方式取得storyboard上的controller
a.直接使用入口controller,這個view的背景色是橄欖綠
Image(196)
 
設置storyboard中的ViewController的class為自定義的controller
6A478DD1-106A-4AF5-8BBF-2B3E85AAA454
 
1     // 3.1直接使用InitialViewController2     self.window.rootViewController = [sb instantiateInitialViewController];
 
Image(197)
 
b.使用ID
設置ViewController的class
DFF26141-20C2-4CBB-B113-C46B912EDE58
 
 
再拖入一個ViewController,設置view的背景色是黃色,設置ID是”vc2"
Image(198)
 
1     // 4.使用ID取得controller, 設置rootViewController2     self.window.rootViewController = [sb instantiateViewControllerWithIdentifier:@"vc2"];
 
Image(199)
 
完成的加載過程:
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // 1.手動添加window到screen 3     self.window = [[UIWindow alloc] init]; 4     self.window.frame = [[UIScreen mainScreen] bounds]; 5     self.window.backgroundColor = [UIColor grayColor]; 6     [self.window makeKeyAndVisible]; 7     8     // 2.取得stroyboard 9     UIStoryboard *sb = [UIStoryboard storyboardWithName:@"mysb" bundle:nil];10    11     // 3.取出storyboar中的controller12     // 3.1直接使用InitialViewController13     ViewController *controller = [sb instantiateInitialViewController];14    15     // 3.2使用ID16     ViewController2 *controller2 = [sb instantiateViewControllerWithIdentifier:@"vc2"];17    18     // 4.設置rootViewController19     self.window.rootViewController = controller2;20    21     return YES;22 }
 
總結:
1.創建Single View Application的時候,項目會自帶一個storyboard,其實就是做了上面的事情
設置了Main storyboard 的文件,就會自動加載storyboard
Image(200)
 
2.不同的controller類負責不同的界面的操作
66169713-9BE0-4E3A-A62B-DA2C67BDDA8F
 
2.直接創建
(不詳述)
 
3.指定xib文件創建
在之前沒有storyboard的時候使用這種方法
(1)創建一個controller
Image(201)
 
(2)創建一個xib
Image(202)
 
(3)在xib拖入兩個view,設置一些特征標識,方便對比
Image(203)
 
(4)設置其中一個view為控制器的view
a.更改 File’s Owner 的class為自定義的controller
Image(204)
 
b.設置controller的view
Image(205)
 
(5)從xib加載controller,并把view顯示到window上
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // 1.手動添加window到screen 3     self.window = [[UIWindow alloc] init]; 4     self.window.frame = [[UIScreen mainScreen] bounds]; 5     self.window.backgroundColor = [UIColor grayColor]; 6     [self.window makeKeyAndVisible]; 7   8     // 從xib加載控制器, 設置rootViewController 9     self.window.rootViewController = [[XibViewController alloc] initWithNibName:@"myx" bundle:nil];10     11     return YES;12 }
 
Image(206)
 
總結:
1.storyboard:(這里使用ViewController2為rootViewController)
Image(207)
 
xib:(使用view1作為顯示的view)
Image(208)
 
 
B.創建控制器的view
控制器的view創建有多種方式,(按照優先級進行創建,僅使用最優先的方式)
  • loadView代碼(controller實現loadView方法)
  • storyboard描述
  • xib
 
Image
 
 

最新版的官方文檔:

Image(214)

 
1.通過loadView
(1)創建一個controller、storyboard、xib
Image(210)
 
(2)配置好storyboard和xib的class為自定義的controller
(3)給storyboard和xib的view加上明顯的標志
Image(211)
 
Image(212)
 
(4)在controller類中實現loadView(當controller的view是空的時候,就會調用loadView
 1 // 加載view,這是延遲加載,當需要使用view而view是空的時候調用 2 - (void)loadView { 3     NSLog(@"loadView..."); 4     self.view = [[UIView alloc] init]; 5     self.view.frame = [[UIScreen mainScreen] bounds]; 6     UILabel *label = [[UILabel alloc] init]; 7     label.frame = CGRectMake(40, 40, 100, 100); 8     label.text = @"loadView"; 9     [self.view addSubview:label];10 }
 
(5)在delegate中配置controller到window上
a.配置storyboard的controller為rootViewController
 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // 配置window 3     self.window = [[UIWindow alloc] init]; 4     self.window.frame = [[UIScreen mainScreen] bounds]; 5     self.window.backgroundColor = [UIColor grayColor]; 6     7     // 配置storyboard中的controller為rootViewController 8     self.window.rootViewController = [[UIStoryboard storyboardWithName:@"test" bundle:nil] instantiateInitialViewController]; 9   10      // 配置xib中的controller為rootViewController,主要要使用帶有loadView的controller11 //    self.window.rootViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];12    13     // 顯示window14     [self.window makeKeyAndVisible];15     return YES;16 }17  
會發現沒有起作用
Image(213)
 
b.同樣,使用xib中的controller為rootViewController,只要loadView存在,也不會起作用
1      // 配置xib中的controller為rootViewController,主要要使用帶有loadView的controller2     self.window.rootViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
 
總結:
在配置rootViewController的時候,如果配置的controller中實現了loadView方法,就會覆蓋storyboard或xib中的view
 
 
 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日日草视频| 91久久夜色精品国产网站 | 91精品免费在线 | 国产精品一品二区三区四区18 | 91精品国产乱码久久桃 | 久久久久久精 | 久久96国产精品久久秘臀 | 男女视频免费看 | 中文字幕亚洲一区二区三区 | 99最新地址 | 亚洲免费毛片基地 | 久久久久成人免费 | 羞羞网站视频 | 亚洲第一成人久久网站 | 久久久久免费电影 | 亚洲欧美一区二区三区在线观看 | 国产精品视频一区二区三区综合 | 91成人免费在线观看 | 国产一级毛片视频在线! | 亚洲午夜在线观看 | 亚洲天堂中文字幕在线观看 | 亚洲国产精品久久久久婷婷老年 | 成人三级视频网站 | 99精品在线免费 | 精品国产一区二区三区久久久狼牙 | 久久中文一区 | 男人天堂免费 | 久久久久北条麻妃免费看 | 中文字幕在线播放第一页 | 亚洲成人精品一区二区 | 久久精品网站视频 | 日本欧美一区二区三区在线播 | 久久久久国产一区二区三区不卡 | 中文字幕在线看第二 | 毛片在线免费播放 | 欧美一级黄色片在线观看 | 天堂精品 | 成人免费视频视频在线观看 免费 | 久久久激情网 | 久久99精品久久久久久236 | 男人的天堂视频网站 |