[iOS] 筆記-使用者介面UIStoryboardSegue

本資料僅供學習參考交流用,為個人的翻譯,流傳出本站後若引起任何問題恕不負責。


資料來源:官方網站


UIStoryboardSegue


這個物件是負責讓view controllers之間的轉換可視。此外,seque物件用來準備讓view controller轉換到另一個去。Seque物件包含view controllers在轉換過程中的資訊。當seque被觸發,且於可見的轉換發生之前,storyboard runtime呼叫目前的view controller的方法prepareForSeque:sender:,所以它可以傳遞任何需要的資料給要呈現在畫面上的view controller。UIStoryboardSegue類別支援UIKit裡面可使用的標準的可見轉換。你也可以設定子類在你的storyboard檔案裡面去定義客制化的view controllers之間的轉換。


你不用直接創造seque物件。當必行view controllers之間的轉換時,storyboard runtime會創造他們。如果你要的話,你仍然可以用UIViewController裡面的performSequeWithIdentifier:sender:方法程序化地發動一個seque。你也可以由程式化的加入的源碼去發動一個seque,所以在interface builder裡面無法取得。

Subclassing Notes


你要在你的應用程式中提供客制化view controllers之間的轉換的話,你可以設定UIStoryboardSeque的子類。要使用你的客製化seque,在interface Builder裡面,在適當的view controllers之間加上seque line,並且在inspector裡面設定他的type為Custom,你也必須指定用在inspector中的seque的名稱。

當storyboard runtime偵測到一個客制化seque,他會創造你類別的一個新的實例,用view controller物件去設定它,要求view controller的源碼去準備seque,並且執行seque。


Method to Override


對於客制化seque,你主要要去override的方法是perform方法。當要從sourceViewController中的view controller執行一個可見的轉換成destinationViewController中的view controller時,storyboard runtime會呼叫這個方法。如果你需要初始化你的客制化seque子類中的任何變數,你也可以覆寫initWithIdentifier:source:destination:方法並且在你的客制實作中初始化這些變數。


Properties

有三個properties:


destinationViewController

只能讀取。這是seque的目標view controller。這個property包含了view controller裡面要在seque最後呈現在畫面上的內容了。

identifier

只能讀取。seque物件的identifier。

你在Interface Builder中給定identifier於seque。Identifier是一個字串,你的應用程式用它去分辨不同的seques。舉例來說,如果你有一個原始的view controller可以seque到兩個或兩個以上的不同的destination view controllers,你要給定不同的identifiers給每一個seque,這樣的話原始的view controller的prepareForSeque:sender:方法才能分辨他們,並且為每一個seque準備好。

sourceViewController

只能讀取。seque的原view controller。這個property包含了view controller裡面要在seque一開始呈現在畫面上的內容。



留言