UIStoryboardSegue中如何用segue進行傳值

一個UIStoryboardSegue對象負責執行兩個試圖控制器之間的視覺過渡。另外,segue對象通常用來準備從一個控制器過渡到另一個控制器。segue對象包含了涉及過渡的控制器的信息。當segue被觸發,並且在視覺過渡發生之前,正在運行的storyboard調用當前的視圖控制器的prepareForSegue:sender:方法從而可以傳送任何將要展示的必須數據到下一個視圖控制器。

UIStoryboardSegue類支持UIKit提供的標準視覺過渡。您還可以繼承到您的故事板文件中定義的視圖控制器之間的自定義轉換。

你不必直接創建segue對象。運行的storyboard創建他們當它必須執行一個在兩個視圖之間的segue時候。如果你希望的話,你也可以通過編程的方法啓動一個segue通過使用UIViewController中的performSegueWithIdentifier:sender:方法。你可以通過這種方法啓動一個segue從通過代碼添加的資源並且在Interface builder中不可用。

子類注意事項:
你可以繼承UIStoryboard當你想在應用中的視圖控制器之間提供一個自定義過渡。用自己定義的segue,創建一個segue line在interface buider上恰當的視圖控制器之間並且設置他的類型爲自定的監督類型;你必須指定segue的類名用來檢查用。
當故事板運行時檢測到一個自定義的segue,它創建類的一個新實例,與視圖控制器對象對其進行配置,要求源視圖控制器爲segue做準備,然後執行segue。

需要重載的方法:
對於自定義的segues,你需要重載的主要方法是perform. 運行的storyboard調用這個方法當執行從一個在
sourceViewController的視圖控制器過渡到一個destinationViewController的視圖控制器。如你需要初始化任何變量在你的自定義segue子類,你同樣可以重載initWithIdentifier:source:destination:方法並且在你自定義實現中初始化他們。

替代子類:
如果你的segue不需要攜帶附加的信息或者提供除了 perform方法以外的任何方法,考慮使用segueWithIdentifier:source:destination:performHandler: 方法代替。

①自動segue:
直接從相應的控件連線到相應的ViewController,然後選擇push
這裏寫圖片描述

②手動segue:
從登陸界面連線到相應的ViewController,然後選擇push。
這裏寫圖片描述

然後在響應的事件中添加如下代碼:

- (IBAction)clicktoTwo:(id)sender {  
     [self performSegueWithIdentifier:@"oneToTwo" sender:nil];    
}  

其中oneToTwo是segue的ID

這裏寫圖片描述

如果要將數據傳入下一個ViewController中,需要以下方法:

//執行segue後,將要跳轉前執行。  
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
{  
    UIViewController *vc =  segue.destinationViewController;  
    [vc.navigationItem setTitle:[NSString stringWithFormat:@"%@的聯繫人",self.textfieldName.text]];  
}  
發佈了190 篇原創文章 · 獲贊 12 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章