本文不夠全面,建議查看View Controller 轉(zhuǎn)場這篇文章。
在iOS中,segue的class為UIStoryboardSegue,用于storyboard中不同視圖控制器間轉(zhuǎn)場,即從一個視圖控制器轉(zhuǎn)場到另一個視圖控制器。Segue的起點必須是一個view或者定義某些操作的對象,如:UIBarButtonItem、UIControl和UIGestureRecognizer。
Segue分為以下幾種類型,其中Push、Modal、Popover和Replace已棄用。
- Show
- Show Detail
- Present Modally
- Present as Popover
- Custom
PushModalPopoverReplace
在iPhone中有Show、Show Detail、Present Modally、Custom四種不同類型,iPad中有Show、Show Detail、Present Modally、Present as Popover、Custom五種不同類型。
Show
- 使用方法
showViewController: sender: - 該方法為視圖控制器提供了自適應、靈活的呈現(xiàn)方式。
- 用在
UINavigationController堆棧視圖時,presentedViewController進入時由右向左,退出時由左向右。新壓入的視圖控制器有返回按鈕,單擊可以返回。 - 用在
UIViewController實例時,和presentViewController: animated: completion:效果一致。
Show Detail
- 使用方法
showDetailViewController: sender: - 只適用于嵌入在
UISplitViewController對象內(nèi)的視圖控制器,分割控制器用以替換詳細控制器(DetailViewController)。 - 不提供返回按鈕。
- 用于
UISplitViewController以外的控制器時,和showViewController:sender用法一樣。
Present Modally
- 使用方法
presentViewController: animated: completion: - 有多種不同呈現(xiàn)方式,可根據(jù)需要設置。在iPhone中,一般以動畫的形式自下向上覆蓋整個屏幕,用戶無法與上一個視圖交互,除非關(guān)閉當前視圖;在iPad中,常見呈現(xiàn)為一個中心框,中心框以動畫形式自下向上彈出,同時使底層視圖控制器變暗。
- 不提供返回按鈕。
Present as Popover
在iPad中,目標視圖以浮動窗樣式呈現(xiàn),點擊目標視圖以外區(qū)域,目標視圖消失;在iPhone中,默認目標視圖以模態(tài)覆蓋整個屏幕。
下面GIF演示了Show和Present在新頁面出現(xiàn)方式的不同:

presentViewController: animated: completion: 是用另一個視圖控制器替換自己,會根據(jù)presentationStyle選擇呈現(xiàn)方式。退出時使用dismissViewControllerAnimated: completion: 方法。
showDetailViewController: sender:是一種自適應方法,會根據(jù)當前狀態(tài)進行不同操作,對應退出方法也不同。
參考資料:
- View Controller 轉(zhuǎn)場
- View Controller Programming Guide for iOS---Using Segues
- dismissViewController vs popViewController
- What's the difference between all the Selection Segues
本文地址:http://www.itdecent.cn/p/36a48e47555d
歡迎更多指正:https://github.com/pro648/tips/wiki