你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 詳解iOS的UI開辟中掌握器的創立辦法

詳解iOS的UI開辟中掌握器的創立辦法

編輯:IOS開發綜合

掌握器的創立
解釋:掌握器有三種創立方法,上面逐個停止解釋。

1、第一種創立方法(應用代碼直接創立)

1.創立一個空的IOS項目。

2.為項目添加一個掌握器類。

https://www.ios5.online/ios/UploadFiles_8070/201703/2017031615453573.png (536×159)

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上顯示出來。

20151126122000297.png (319×502)

2、第二種創立方法(經由過程storyboard創立)

1.添加一個storyboard文件,定名為test,在界面上拖一個view controller掌握器。

2.設置這個掌握器和法式中的YYviewController類停止聯系關系,設置掌握器view的色彩以便辨別。

20151126122020068.png (800×323)

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)更改初始掌握器,即把箭頭拖拽到想要創立的掌握器後面,在代碼中停止創立。

20151126122046257.png (782×296)

完成代碼:


#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)經由過程設置獨一的標識符來創立指定的掌握器

20151126122106223.png (840×287)

完成代碼:


#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中默許就曾經停止了連線。

20151126122219443.png (895×168)

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的優先級

20151126122242127.png (719×380)

蘋果官方文檔表示圖:

20151126122258265.png (1421×1210)

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開辟中掌握器的創立辦法】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved