掌握器的創立
解釋:掌握器有三種創立方法,上面逐個停止解釋。
1、第一種創立方法(應用代碼直接創立)
1.創立一個空的IOS項目。
2.為項目添加一個掌握器類。
3.直接在署理辦法中創立一個掌握器。
#import "YYAppDelegate.h"
#import "YYViewController.h"
@implementation YYAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.Window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.Window.backgroundColor = [UIColor whiteColor];
//創立掌握器
YYViewController *controller=[[YYViewController alloc]init];
//設置掌握器View的配景色彩
controller.view.backgroundColor=[UIColor brownColor];
//設置該掌握器為Window的根掌握器
self.window.rootViewController=controller;
[self.window makeKeyAndVisible];
return YES;
}
4.掌握器的view添加到Window上顯示出來。
2、第二種創立方法(經由過程storyboard創立)
1.添加一個storyboard文件,定名為test,在界面上拖一個view controller掌握器。
2.設置這個掌握器和法式中的YYviewController類停止聯系關系,設置掌握器view的色彩以便辨別。
3.留意這類毛病寫法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
YYViewController *controller=[[YYViewController alloc]init];
self.window.rootViewController=controller;
[self.window makeKeyAndVisible];
return YES;
}
留意:僅僅如許是不可的,由於法式中並沒有加載storyboard,所以沒有可以或許創立出我們想要的掌握器。怎樣辦?明白的告知要加載的storyboard。
4.創立代碼:
#import "YYAppDelegate.h"
#import "YYViewController.h"
@implementation YYAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
// YYViewController *controller=[[YYViewController alloc]init];
//1.加載storyboard,(留意:這裡僅僅是加載稱號為test的storyboard,其實不會創立storyboard中的掌握器和控件)
UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];
//2.上面這個辦法代表著創立storyboard中箭頭指向的掌握器(初始掌握器)
YYViewController *controller=[storyboard instantiateInitialViewController];
//參考
// UINib *nib=[UINib nibWithNibName:@"test" bundle:nil];
// [nib instantiateWithOwner:nil options:nil];
//3.設置掌握器為Window的根掌握器
self.window.rootViewController=controller;
[self.window makeKeyAndVisible];
return YES;
}
步調:
(1)加載storyboard
(2)創立掌握器
(3)把掌握器設置為Window的根掌握器
5.拓展
新的需求:假如在一個storyboard中又多個掌握器,若何指定創立哪一個特定的掌握器呢?
這裡有兩種辦法可以斟酌:
(1)更改初始掌握器,即把箭頭拖拽到想要創立的掌握器後面,在代碼中停止創立。
完成代碼:
#import "YYAppDelegate.h"
#import "YYViewController.h"
@implementation YYAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
// YYViewController *controller=[[YYViewController alloc]init];
//1.加載storyboard
UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];
//2.創立指定的掌握器
UIViewController *controller=[storyboard instantiateInitialViewController];
//3.設置掌握器為Window的根掌握器
self.window.rootViewController=controller;
[self.window makeKeyAndVisible];
return YES;
}
提醒:留意創立的指定掌握器的類型。
(2)經由過程設置獨一的標識符來創立指定的掌握器
完成代碼:
#import "YYAppDelegate.h"
#import "YYViewController.h"
@implementation YYAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
//1.加載storyboard
UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"test" bundle:nil];
//2.創立指定的掌握器
UIViewController *controller=[storyboard instantiateViewControllerWithIdentifier:@"one"];
//3.設置掌握器為Window的根掌握器
self.window.rootViewController=controller;
[self.window makeKeyAndVisible];
return YES;
}
3、第三種創立方法(應用xib)
1.新建一個xib文件,定名為two.xib。
2.創立進程和留意點
(1)創立代碼:
#import "YYAppDelegate.h"
#import "YYViewController.h"
@implementation YYAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
//1.經由過程xib創立掌握器
YYViewController *controller=[[YYViewController alloc]initWithNibName:@"two" bundle:nil];
//2.設置這個掌握器為Window的根掌握器
self.window.rootViewController=controller;
[self.window makeKeyAndVisible];
return YES;
}
(2)兩個毛病留意點
1)不克不及加載(was unable to load a nib named "two")
發生緣由:在xib文件中沒有停止任何操作。
處理辦法:往xib中拖一個view
2)加載了xib,然則沒有設置輸入口(loaded the "two" nib but the view outlet was not set.')
發生緣由:沒有把xib的view設置為YYviewController的view
處理辦法:設置File‘s Owner,可以懂得為設置這個文件歸誰一切,對File‘s Owner和view停止連線。連線是由於一個xib中能夠會有多個view,在storyboard中默許就曾經停止了連線。
4、模擬有storyboard的項目掌握器的創立
1.創立一個項目
2.在設置裝備擺設文件中,把主storyboard的稱號刪失落(找不到storyboard)。
3.代碼(storyboard做的工作就是上面的代碼所做的工作)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// 1.創立winodw
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
// 2.創立掌握器
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
NJViewController * vc = [storyboard instantiateInitialViewController];
// 3.設置window的根掌握器
self.window.rootViewController = vc;
// 4.顯示window
[self.window makeKeyAndVisible];
return YES;
}
掌握器的View的創立
1、6種創立掌握器View的方法
#import "NJAppDelegate.h"
#import "NJViewController.h"
/*
1.沒有同名xib情形下
2.經由過程 storyboard 創立
3.有指定xib情形下創立
4.有同名xib情形
5.有同名去失落controll的情形
6.loadveiw
*/
@implementation NJAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 創立UIWindow
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
/*
// 1.第一種方法:沒有xib和storyboard
// (假如沒有xib和storyboard, 會主動創立一個空白的view做為掌握器的veiw)
NJViewController *vc = [[NJViewController alloc] init];
*/
/*
//2.經由過程 storyboard 創立
// 假如經由過程storyboard創立, 會創立箭頭指向view做為掌握器的veiw
// 假如重寫了掌握器的loadview辦法, 就不會創立storyboard中描寫的view作為掌握器的view, 而是創立一個空白的veiw做為掌握器的veiw
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
NJViewController *vc = [storyboard instantiateInitialViewController];
*/
/*
// 3.有指定xib情形下創立
// 假如經由過程xib, 會創立xib中描寫的veiw做為掌握器的veiw
NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
*/
/*
// 4.有同名xib情形
// 假如有同名的xib, 會主動找到同名xib中描寫的view做為掌握器的veiw
NJViewController *vc = [[NJViewController alloc] init];
*/
/*
// 5.有同名去失落Controller的 xib情形
// 假如有有同名去失落Controller的xib, 會主動找到該xib的view做為掌握器的view
NJViewController *vc = [[NJViewController alloc] init];
*/
// 6.重寫掌握器的loadveiw辦法
// 假如重寫了掌握器的loadview辦法, 就不會去加載創立同名去失落controller的xib和同名的xib, 而是創立一個空白的veiw做為掌握器的veiw
NJViewController *vc = [[NJViewController alloc] init];
// 設置掌握器為window的根掌握器
self.window.rootViewController = vc;
// 顯示window
[self.window makeKeyAndVisible];
return YES;
}
六種方法:
1.沒有同名xib情形下
2.經由過程 storyboard 創立
3.有指定xib情形下創立
4.有同名xib情形
5.有同名去失落controll的情形
6.loadveiw
2、創立掌握器View的優先級
蘋果官方文檔表示圖:
3、掌握器View的延遲加載
解釋:
掌握器的view是延遲加載的:用到時再加載
可以用isViewLoaded辦法斷定一個UIViewController的view能否曾經被加載
掌握器的view加載終了就會挪用viewDidLoad辦法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 1.創立UIWindow
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
// 2.創立掌握器
NJViewController *vc = [[NJViewController alloc] init];
// 實際上是兩步操作, 起首挪用loadview辦法, 創立掌握器的veiw,然後再設置掌握器的view的色彩為紫色, 也就是說後一次的色彩籠罩失落了前一次的色彩
vc.view.backgroundColor = [UIColor purpleColor];
// 3.設置掌握器為window的根掌握器
self.window.rootViewController = vc;
// 4.顯示window(在這一行才用到了掌握器的veiw)
[self.window makeKeyAndVisible];
return YES;
}
主掌握器文件中:
#import "NJViewController.h"
@interface NJViewController ()
@end
@implementation NJViewController
// 當掌握器須要顯示掌握器的view的時刻就會挪用loadView
// 可以在loadView辦法中創立view給掌握器
// 該辦法普通用於自界說掌握器的view
- (void)loadView
{
// 甚麼時刻挪用loadveiw就代表甚麼時刻加載掌握器的veiw
NSLog(@"loadView");
self.view = [[UIView alloc] init];
self.view.backgroundColor = [UIColor greenColor];
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"viewDidLoad");
}
@end
【詳解iOS的UI開辟中掌握器的創立辦法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!