iOS scene之间的跳转类型——Segue

来源:互联网 发布:java onvif 编辑:程序博客网 时间:2024/06/07 03:07

segue可以单独在scene之间使用,也可以配合NavigationController的导航栈一起使用


segue图标

名称

使用说明

 

Show

NavigationController存在的情况下,Show相当于老版本的Push类型,segue连接的Controller会被压入导航栈。压入方式视当前Controller(发起方)状态而定:当前如果是master-detail视图的,对方被压入detail区域;如果当前是masterdetail的视图的,对方被压入masterdetail视图的导航栈。只能使用自动生成的导航bar上的back按钮才能出栈。

 

Show Detail

这种类型是不压栈的,不管有没有NavigationController,它只是replace取代了当前的视图,当前如果是master-detail视图的,则取代detail区域的原视图;如果当前是masterdetail的视图的,取代masterdetail视图导航栈位于栈顶的controller

 

Present Modally

这种类型是不压栈的,以模态的方式显示,类似于弹出的警告窗口、登陆框一类的视图

 

Present as Popover

这种类型不压栈,类似于下拉菜单

 

Custom

可用于自定义



注意: push必须保证在有导航栈的前提下才可以使用,不然会导致程序崩溃。而show则会根据当前是否具有导航栈选择相应的跳转类型,如果有当前有导航栈,则压栈(效果如push);如果当前没有导航栈,则不压栈(效果如ShowDetail)。要想出栈,目前只发现两种方式:(1)导航控制器提供的back按钮这种方式。使用任何普通segue跳回的方式都不能出栈,原因是普通segue的跳转机制是实例化一个新的目标ViewController,也就是说,这样跳到的目的地是新的目标ViewController,而不是那个被压在栈里的老实例。(2)使用unwind segue可以实现出栈,其原因得益于它的跳转机制与普通segue不同,采用unwind segue跳转到的目标ViewController,是原来的那个被压在导航栈栈中的老实例。

官方文档链接:https://help.apple.com/xcode/mac/8.2/index.html?localePath=en.lproj#/dev564169bb1

0 0
原创粉丝点击