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

本文详细介绍了iOS开发中Segue的不同类型及其应用场景,包括Show、ShowDetail、PresentModally等,并探讨了它们与NavigationController的关系及如何实现正确的跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值