使用Unwind Segue机制进行页面跳转返回

一、简介

在开发iOS应用时,页面间的跳转时很正常也很频繁的操作。在页面之间跳转,包括从一个界面跳转到一个新的页面,以及从新的页面返回之前已经打开过的页面。这里实际上,iOS使用页面栈的方式对页面进行管理。

先打开的页面在栈的底部,跳转到的新页面在栈的顶部,想要打开新的页面,实际上时向栈顶加页面,而想要返回,就是从栈顶开始,将返回目标页面之上的页面全都移除。

利用Storyboard实现页面间的跳转时十分容易的一件事情,我们可以右击某个按钮,然后关联action到新的页面,选择对应的segue类型即可。

而从新的页面返回到旧的页面,就需要增加一点操作了。

二、示例

2.1 准备

  1. 使用Xcode新建一个iOS工程,并命名为“DismissSegue”
  2. 拖拽两个“View Controller”到画板,分别命名为“ActionViewController”以及“DetailViewController”
  3. 点选默认生成的“View Controller”,为之生成一个“Navigation Controller”
  4. 拖拽一个“Bar Button Item”到默认的“View Controller”的导航上,命名为“Action View”
  5. 向“ActionViewController”中添加两个Button,并修改文字为“Show”,“Dismiss”
  6. 向“DetailViewController”中添加两个Button,并修改文字为“Home”,“Action View Contrller”
  7. 右击“ViewController”上的“Action View”按钮,添加Action到“Action View Controller”,动作类型选为“Present Modally”
  8. 右击“Action View Controller”上的Show按钮,添加Action到“Detail View Controller”,动作类型选为“Present Modally”
  9. 添加新的类文件“ActionViewController”,并关联到“Action View Controller”

输入图片说明

2.2 添加返回动作

  • 打开“ViewController.swift”,并添加如下代码
@IBAction func unwindSegue(segue: UIStoryboardSegue) {
    NSLog("Back to Home View Controller!")
}
  • 打开“ActionViewController.swift”两个文件,并添加如下代码
@IBAction func unwindToActionViewController(segue: UIStoryboardSegue) {
    NSLog("Back to Action View Controller!")
}
  • 打开Storyboard,找到“Action View Controller”,按住Ctrl健拖动“Dismiss”按钮,到最上方的“Exit”处,此时会弹出之前添加的两个方法以供关联。

输入图片说明

  • 为“Dismiss”按钮选择“unwindSegue”方法进行关联
  • 为“Home”按钮选择“unwindSegue”方法进行关联,为“Action View Controller”按钮选择“unwindToActionViewController”进行关联
  • 运行程序

三、说明

通过运行上面的示例程序我们可以看到,返回按钮的返回动作取决于我们想要返回的目标视图是哪个,我们确定要返回的视图后,我们需要做的就是通过关联“Exit”中对应视图的Unwind Segue动作即可。

点击下载源码

注意:

  1. 返回按键关联到的,不是当前视图的UnwindSegue动作,而是要返回的目标视图的UnwindSegue。UnwindSegue的目的是 返回 ,而不是 关闭
  2. Unwind Segue动作,需要标识为@IBAction,并使用segue: UIStoryboradSegue作为传入参数(参数名随意)。
  3. 除了使用UnwindSegue制作返回动作之外,还可以使用导航控制器实例进行编程完成。

转载于:https://my.oschina.net/skyler/blog/487304

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值