iOS中的Storyboard

語言: CN / TW / HK

highlight: a11y-dark theme: cyanosis


「這是我參與11月更文挑戰的第28天,活動詳情檢視:2021最後一次更文挑戰

關於Storyboard

Storyboard 是最先在 iOS5 中引入的一項新特性,它的出現使得開發人員大幅縮減構建App使用者介面所需的時間

關於Storyboard的載入方式

  • 一般在新建工程後,我們便可以看到Xcode會預設載入 Storyboard,但是在實際開發中,我們更常用的是自己新建 Storyboard,所以,這裡主要講手動建立控制器時,載入 Storyboard 的方式

  • 通常在新建的專案中,我們首先要將Xcode載入 Storyboard 去掉

    這裡寫圖片描述

  • 關於 Storyboard 建立控制器

    第一種:

    這裡寫圖片描述

    js self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc = [sb instantiateInitialViewController]; self.window.rootViewController = vc; [self.window makeKeyAndVisible];

    第二種:

    這裡寫圖片描述

    js self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"WAKAKA"]; self.window.rootViewController = vc; [self.window makeKeyAndVisible];


關於UIStoryboardSegue

在 Storyboard 中,用來描述介面跳轉的線,都屬於 UIStoryboardSegue 的物件(簡稱:Segue

這裡寫圖片描述

Segue的屬性

  • 唯一標識(identifier
  • 來源控制器(sourceViewController
  • 目標控制器(destinationViewController

Segue的型別

  • 自動型(點選某控制元件,不需要進行某些判斷可直接跳轉的)

    這裡寫圖片描述

  • 手動型(點選某控制元件,需要進行某些判斷才跳轉的) 這裡寫圖片描述

  • 手動設定 Segue 需要設定

    這裡寫圖片描述

    使用 perform 方法執行對應的 Segue

    js //根據Identifier去storyboard中找到對應的線,之後建立一個storyboard的物件 [self performSegueWithIdentifier:@"showinfo" sender:nil]; 如果需要做傳值或跳轉到不同的UI,需要在這個方法裡程式碼實現 js - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ //比較唯一標識 if ([segue.identifier isEqualToString:@"showInfo"]) { //來源控制器 UINavigationController *nvc = segue.sourceViewController; //目的控制器 ListViewController *vc = segue.destinationViewController; vc.info = @"show"; } }