iOS9 Storyboard unwind segue反回傳遞事件時機詳細步驟

  當返回上一個界面且須要上一個界面作某事時,用unwind segue實現起來比delegate簡單許多,甚至有時不適合用delegate來實現,那麼咱們就用unwind segue吧,並且像1->2->3這樣的跳轉,3視圖能夠經過unwind segue方便的返回到一、2任意界面。下面跟着我一塊兒作吧。git

1、建立以下視圖

  個人一、二、3界面分別對應ViewController一、ViewController二、ViewController3github

2、下面演示怎麼從2返回到1,從3返回到1

  (1)打開須要返回到的界面ViewController1.m,加上下面方法,返回類型必定是IBAction,參數類型必定是UIStoryboardSegue,名稱隨便(這個方法必定要加,返回時調用的)ide

//其餘界面返回到此界面調用的方法
- (IBAction)ViewController1UnwindSegue:(UIStoryboardSegue *)unwindSegue { }

  (2)右鍵2界面上方的Exit(下圖中畫綠圈的)彈出菜單中能夠看到剛纔在1界面中加的那個方法的名稱(下圖中紅色圈裏),而後以下圖同樣連線,彈出菜單選擇manualspa

 

  (3)給2視圖的unwind segue取一個名字叫from2to1以下圖,等會會用到。code

 

 

  (4)同理從3視圖返回到1視圖,也是右鍵3界面上方的Exit彈出菜單中能夠看到剛纔在1界面中加的那個方法的名稱,而後連線,彈出菜單選擇manual,給3視圖的unwind segue取一個名字叫from3to1  (5)咱們給2視圖和3視圖中的「2退至1」、「3退至1」的按鈕加上事件代碼,這裏就用到了給unwind segue取的名字(也就是identifier)orm

- (IBAction)back:(id)sender {
  //執行segue跳頁的方法 [self performSegueWithIdentifier:
@"from2to1" sender:nil]; }
- (IBAction)back:(id)sender {
  //執行segue跳頁的方法
  [self performSegueWithIdentifier:
@"from3to1" sender:nil];
}

  (6)再打開ViewController1.m,找到剛纔加的那個方法,往裏面加一些代碼,能夠根據unwindSegue.identifier判斷從哪一個界面退回到1的blog

//其餘界面返回到此界面調用的方法
- (IBAction)ViewController1UnwindSegue:(UIStoryboardSegue *)unwindSegue { if ([unwindSegue.identifier isEqualToString:@"from2to1"]) { _lbShowMessage.text = @"從2退到1"; } else if ([unwindSegue.identifier isEqualToString:@"from3to1"]) { _lbShowMessage.text = @"從3退到1"; } }

好了,運行一下,達到了咱們要的效果。事件

3、附加知識

  返回按鈕事件甚至能夠一行代碼都不用寫,下面演示從3返回到2it

  (1)打開須要返回到的界面ViewController2.m,加上下面方法,返回類型必定是IBAction,參數類型必定是UIStoryboardSegue,名稱隨便io

//其餘界面返回到此界面調用的方法
- (IBAction)ViewController2UnwindSegue:(UIStoryboardSegue *)unwindSegue { if ([unwindSegue.identifier isEqualToString:@"from3to2"]) { _lbShowMessage.text = @"從3退到2"; } }

  (2)右鍵3界面上方的Exit彈出菜單以下圖,由於是返回到2,因此選擇2界面的那個方法而後連線,此次是連到button,這樣button事件就不用代碼寫了,給unwind segue取一個名字叫from3to2

  (3)我如今不給「3退至2」這個按鈕加事件代碼,就能夠點擊它返回到2了,運行一下試試。

  結束:附上demo連接https://github.com/zhanglinfeng/ZLFSegueDemo

相關文章
相關標籤/搜索