modal segue會占據整個螢幕,是以使用的使用一定要小心,提前做好傳回的處理,使用modal segue的好處是在執行某項操作前必須,比如我們熟悉的alert和actionsheet。
比如手機中的聯系人頁面,點選右上角的加号會出現一個添加聯系人的頁面,整個頁面的劃出方式就是modalsegue。通常modalsegue中的取消按鈕會取消目前的操作,而确定按鈕會送出目前的操作。注意modal segue生成的MVC也可以嵌套,比如增加聯系人頁面中的增加聯系人頭像按鈕也是一個modal segue的MVC。
總之使用modal segue要小心,至于如何使用modal segue的問題,在連線的時候選擇Modal,如果不是通過按鈕調用segue,你可以在代碼中直接調用performSegue方法,或者presentViewController方法。
在方法prepareForSegue中modal和其他方式沒有差別。那麼該如何從modal segue建立的MVC中傳回呢?通常情況下整個MVC都會和某些資料做互動,不需要傳回任何資訊,比如新增一個聯系人,如果你有需要,可以使用unwind segue進行互動,但是大部分modal MVC都隻會dismiss(移除)它們自己而已。那麼該如何移除呢?如果使用unwind的話在傳回指定控制器後會自動移除目前的控制器。如果不适用unwind就需要主動調用dismiss了,調用下面的方法:
dismissViewControllerAnimated,接着就會傳回之前的MVC(也就是使用modal segue生成MVC的MVC)。dismiss隻針對目前展示給使用者的MVC,在任何時候被modal segue的MVC都知道是誰彈出的自己。
關于modal segue的動畫效果:我們看到使用modal segue的MVC是從下面滑出來的,這是預設的方式.CoverVertical,還有其他方式,比如
.FlipHorizontal:翻轉效果,彈出的MVC與之前的MVC通過翻轉交換位置。
.CrossDissolve:新的MVC淡入,舊的MVC淡出。
.PartialCurl:從底下翻出一個角展示一個新的MVC。