你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS編程技術 >> iOS學習之控制器的創建

iOS學習之控制器的創建

編輯:IOS編程技術

本次博客是一篇總結性質的博客,總結的是各種創建控制器的方式以及一些需要注意的操作。

1、通過storyboard創建控制器

 正如我上一篇博客中所說,當 Main Interface 沒有選定的時候,我們一般只能通過代碼來創建一個 UIWindow,不再使用系統創建好的 Main.storyboard。

 通過 storyboard 創建控制器也是在 Main Interface 沒有選定的時候,但是我們還使用系統創建好的 Main.storyboard,通過不同的方法來創建窗口的根控制器。

  • 第一步:在 AppDelegate.m 文件的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中先初始化一個 UIWindow 對象,代碼如下:
    // 創建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  • 第二步:創建一個 UIStoryboard 對象並將其初始化為 Main.storyboard

  初始化方法:

// 參數1:storyboard文件名,不需要帶後綴
// 參數2:置為nil時表示[NSBundle mainBundle]
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(nullable NSBundle *)storyboardBundleOrNil;

  實例代碼:

    // 加載storyboard
    // storyboard文件名,不需要帶後綴,初始化為 Main.storyboard,name就是Main
    // nil:  [NSBundle mainBundle]
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
  • 第三步:通過storyboard創建控制器

  ① 指定箭頭指向的控制器為窗口的根控制器

  方法:

// 加載箭頭指向的控制器
- (nullable __kindof UIViewController *)instantiateInitialViewController;

  實例代碼:

    // 通過storyboard創建控制器
    // instantiateInitialViewController:加載箭頭指向的控制器
    UIViewController *vc = [storyboard instantiateInitialViewController];

   實例圖:

  如上圖:我們將粉色背景的控制器設置為默認 Main.storyboard 的控制器,當我們使用上述代碼時,程序運行的效果是:如下圖的一個粉色窗口

  ② 通過 Storyboard ID 來創建根控制器

  方法:

// 參數為:Storyboard ID 的字符串
- (__kindof UIViewController *)instantiateViewControllerWithIdentifier:(NSString *)identifier;

  實例代碼:

// 通過 Storyboard ID 創建控制器
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"green"];

  正如 ① 中所示的圖,我們將綠色背景的控制器的 Storyboard ID 置為 "green",但是Main.storyboard 的默認控制器仍然為粉色背景的控制器,使用上述實例代碼,運行結果為如下圖的一個綠色窗口

  具體如何設置視圖控制器為 UIWindow 對象的根視圖控制器以及將 UIWindow 對象作為主窗口並可見,請參考上一篇博客。

2、通過xib創建控制器

 通過 xib 創建控制器也是在 Main Interface 沒有選定的時候,自己在 AppDelegate.m 文件中對應的方法中先初始化一個 UIWindow 對象。

 創建xib的方法:

  ① 在創建一個視圖控制器的類的時候,將 Also create XIB file 選中之後,就會創建出來一個和控制器類對應的xib,如下圖:

    這種方法創建的xib的名字與所對應的類名相同。

  ② 創建一個名字可以自定義的 xib

  創建後的設置:(具體如下圖)

   (1)選擇文件所有者選項

   (2)綁定控制器

   (3)綁定xib視圖

 

  通過xib創建根控制器的方法是一個控制器的初始化方法,實例代碼:

    // 通過xib創建控制器
    ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

  加載xib的特殊寫法:

    // 特殊寫法1:
    UIViewController *vc = [[ViewController alloc] initWithNibName:nil bundle:nil];
    // 特殊寫法2:
    UIViewController *vc = [[ViewController alloc] init];

  以上 xib 的特殊寫法加載 xib View 視圖的底層實現:

   如果描述控制器 View 的 xib 跟控制器的類名相同,就會去加載

   只有控制器的 init 方法底層會調用 initWithNibName:bundle:

   只要通過 initWithNibName:bundle: 初始化控制器,並且 nibName 為 nil ,就會執行以下幾步:

   (1)先尋找有沒有跟控制器類名同名但是不帶Controller的xib,如果有就會去加載(XMGView.xib)

   (2)如果沒有就尋找有沒有跟控制器類名同名的xib,如果有就會去加載(XMGViewController.xib)

   (3)如果都沒有找到,創建空的view,

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