[置頂] iOS 中 Storyboard 與 Xib 間控制器跳轉 - 簡化整理完整版


iOS 中 Storyboard 與 Xib 間控制器跳轉 - 簡化整理完整版

太陽火神的美麗人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商業用途-保持一致”創作公用協議

轉載請保留此句:太陽火神的美麗人生 -  本博客專注於 敏捷開發及移動和物聯設備研究:iOS、Android、Html5、Arduino、pcDuino否則,出自本博客的文章拒絕轉載或再轉載,謝謝合作。




按以下四種情況分別說明,應該不缺啥了吧!

Xib.controller <=> Xib.controller

Storyboard.controller <=> Storyboard.controller

Storyboard.controller <=> Xib.controller

Xib.controller <=> Storyboard.controller


==========

補充:

Storyboard.controller <=> Storyboard.controller

還有一種特例,就是同一個 Storyboard 中的 controller 間跳轉。



=========

再補充:

復用單元的構建,xib 中或 Storyboard 中。


===============================================================

終極簡化兩步:

一是獲取到視圖控制器實例,只有兩種情況,xib 和 storyboard,代碼直接構建不算手畫界面部分不在討論范疇

A、從 xib :AaaViewController *aaaViewController = [[AaaViewController alloc] initWithNibName:@"AaaViewController" bundle:nil];

B、從 storyboard :假設 BbbViewController 視圖控制器在 www.storyboard 中,並且其 storyboardid 為 BbbViewController

      UIStoryboard *wwwSB = [UIStoryboard storyboardWithName:@"www" bundle:nil];

      BbbViewController *bbbViewController = [wwwSB INSTANTIATEvIEWcONTROLLERwITHiDENTIFIER:@"BbbViewController"];


    a、簡化一:如果當前控制器和要壓入的控制器在同一個 storyboard 的話,可以省略構建 UIStoryboard ,直接使用 self.storyboard 替代 wwwSB,

          一個 storyboard 控制器被加載,其 storyboard 被默認保存為屬性便於使用。

    b、簡化二:當 storyboard 中的視圖控制器沒有設置 storyboardid 時,而在該 storyboard 中的控制器間使用 segue 進行了關聯,那么可以執行 segue 完成跳轉,

                        當然 segue 也需要設置 identifier :

         

     [self performSegueWithIdentifier:@"SegueToPersonCenter" sender:sender];

     

     框架內部直接實例化了這個 identifier 對應的 segue 跳轉到的視圖控制器,那么就會有問題出現了,以往可以自已實例化,然后設置目標控制器的屬性,現在怎么辦?

     看下面這個回調方法,在跳轉前會被執行,給一個設置的機會:

     

     - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


     }
     這里的 sender 這里的 sender 就是上面的傳入參數 sender,也可以在控制器的別名分類中設置私有屬性暫存參數,然后在此回調中使用。

    c、簡化三:如果是剛開始為了快速構建控制器間的流轉,也即草圖階段,不關心細節,那么可能連 segue 都不用,直接在按鈕上往目標控制器上一拉選,點按鈕就跳轉了。


二是將此視圖控制器壓入導航控制器堆棧或模態呈現

      這個確實沒什么可說的,與常規一樣,也列一下吧:

      [self.navigationController pushViewController:aaaViewController animated:YES];

      [self presentViewController:bbbViewController animated:YES completion:^{}];


描述完成,基本沒有遺漏了吧,關鍵的東西都在第一步中,視圖控制器的實例化與設置上,

相對來講,越簡便的方法越受束縛,越麻煩的方法,給你的自由度越高,蘋果在這方面面面俱到了。

可以所有的控制器在一個 storyboard 中,使用 segue 跳轉



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com