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

來源:互聯網
上載者:User

標籤:

  當返回上一個介面且需要上一個介面做某事時,用unwind segue實現起來比delegate簡單許多,甚至有時不適合用delegate來實現,那麼我們就用unwind segue吧,而且像1->2->3這樣的跳轉,3視圖可以通過unwind segue方便的返回到1、2任意介面。下面跟著我一起做吧。

一、建立如下視圖

  我的1、2、3介面分別對應ViewController1、ViewController2、ViewController3

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

  (1)開啟需要返回到的介面ViewController1.m,加上下面方法,傳回型別一定是IBAction,參數類型一定是UIStoryboardSegue,名稱隨便(這個方法一定要加,返回時調用的)

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

  (2)右鍵2介面上方的Exit(中畫綠圈的)快顯功能表中可以看到剛才在1介面中加的那個方法的名稱(中紅色圈裡),然後如一樣連線,快顯功能表選擇manual

 

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

 

 

  (4)同理從3視圖返回到1視圖,也是右鍵3介面上方的Exit快顯功能表中可以看到剛才在1介面中加的那個方法的名稱,然後連線,快顯功能表選擇manual,給3視圖的unwind segue取一個名字叫from3to1  (5)我們給2視圖和3視圖中的“2退至1”、“3退至1”的按鈕加上事件代碼,這裡就用到了給unwind segue取的名字(也就是identifier)

- (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的

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

好了,運行一下,達到了我們要的效果。

三、附加知識

  返回按鈕事件甚至可以一行代碼都不用寫,下面示範從3返回到2

  (1)開啟需要返回到的介面ViewController2.m,加上下面方法,傳回型別一定是IBAction,參數類型一定是UIStoryboardSegue,名稱隨便

//其他介面返回到此介面調用的方法
- (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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.