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"; } }