6 - segue

  • Storyboard上每一根用來界面跳轉的線,都是一個UIStoryboardSegue對象(簡稱Segue)


1 - Segue的屬性

每一個Segue對象,都有3個屬性

// 唯一標識
@property (nonatomic, readonly) NSString *identifier;
// 來源控制器
@property (nonatomic, readonly) id sourceViewController;
// 目標控制器
@property (nonatomic, readonly) id destinationViewController;

2 - Segue的類型

根據(jù)Segue的執(zhí)行(跳轉)時刻,Segue可以分為2大類型

  • 自動型:點擊某個控件后(比如按鈕),自動執(zhí)行Segue,自動完成界面跳轉
  • 手動型:需要通過寫代碼手動執(zhí)行Segue,才能完成界面跳轉
2.1 - 自動型Segue
  • 按住Control鍵,直接從控件拖線到目標控制器


  • 點擊“登錄”按鈕后,就會自動跳轉到右邊的控制器
  • 如果點擊某個控件后,不需要做任何判斷,一定要跳轉到下一個界面建議使用“自動型Segue”
2.2 - 手動型Segue
  • 按住Control鍵,從來源控制器拖線到目標控制器


  • 手動型的Segue需要設置一個標識


    Snip20150831_23.png
  • 在恰當?shù)臅r刻,使用perform方法執(zhí)行對應的Segue

// Segue必須由來源控制器來執(zhí)行,也就是說,這個perform方法必須由來源控制器來調用
[self performSegueWithIdentifier:@"login2contacts" sender:nil];`
  • 如果點擊某個控件后,需要做一些判斷
    也就是說:滿足一定條件后才跳轉到下一個界面,建議使用“手動型Segue”

3 - performSegueWithIdentifier:sender:

利用performSegueWithIdentifier:方法可以執(zhí)行某個Segue,完成界面跳轉

3.1 - performSegueWithIdentifier:sender:方法`的完整執(zhí)行過程
// self是來源控制器
[self performSegueWithIdentifier:@“l(fā)ogin2contacts” sender:nil];
3.1.1 - 根據(jù)identifier去storyboard中找到對應的線,新建UIStoryboardSegue對象
  • 設置Segue對象的sourceViewController(來源控制器)
  • 新建并且設置Segue對象的destinationViewController(目標控制器)


    Snip20150831_26.png
3.1.2 - 調用sourceViewController的下面方法,做一些跳轉前的準備工作并且傳入創(chuàng)建好的Segue對象
// sender是當初performSegueWithIdentifier:sender:中傳入的sender
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;
3.1.3 - 調用Segue對象的- (void)perform;方法開始執(zhí)行界面跳轉操作
3.1.3.1 - 如果segue的style是push
  • 取得sourceViewController所在的UINavigationController
  • 調用UINavigationControllerpush方法將destinationViewController壓入棧中,完成跳轉
3.1.3.2 - 如果segue的style是modal

調用sourceViewController的presentViewController方法將destinationViewController展示出來


######4 - Sender參數(shù)的傳遞
![](http://upload-images.jianshu.io/upload_images/666901-61ef7494c18c8983.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 筆記 Xmind PPT 1-控制器管理 控制器以及view的多種創(chuàng)建方式 UINavigationControl...
    CoderZXS閱讀 570評論 0 0
  • 控制器及View的多種創(chuàng)建方式 創(chuàng)建控制器的3種方式?直接通過alloc + init的方式創(chuàng)建。創(chuàng)建一個“Sin...
    冷漠叻葒顏閱讀 1,143評論 0 2
  • 一點說明:本文中“導航控制器”區(qū)別于“視圖控制器”存在 UINavigationController UINavi...
    WeiHing閱讀 5,173評論 0 11
  • 作為一個曾經的蕁麻疹重度患者(比你們發(fā)的那些圖片還要恐怖,注意是恐怖?。?,久病成醫(yī)...醫(yī)生給我開的西藥掛的水我基...
    小米Cdr閱讀 813評論 0 2
  • 今天去和頭馬前主席胡姐交流,收獲很多。 最近發(fā)現(xiàn)總是受挫,自己把自己的心繃的太緊了,對自己的要求也太高,目標設的太...
    woodgg閱讀 255評論 0 0

友情鏈接更多精彩內容