当返回上一个界面且需要上一个界面做某事时,用unwind segue实现起来比delegate简单许多,甚至有时不适合用delegate来实现,那么我们就用unwind segue吧,而且像1->2->3这样的跳转,3视图可以通过unwind segue方便的返回到1、2任意界面。下面跟着我一起做吧。

一、创建如下视图

  我的1、2、3界面分别对应ViewController1、ViewController2、ViewController3

二、下面演示怎么从2返回到1,从3返回到1

  (1)打开需要返回到的界面ViewController1.m,加上下面方法,返回类型一定是IBAction,参数类型一定是UIStoryboardSegue,名称随便(这个方法一定要加,返回时调用的)

//其他界面返回到此界面调用的方法- (IBAction)ViewController1UnwindSegue:(UIStoryboardSegue *)unwindSegue {}

  (2)右键2界面上方的Exit(下图中画绿圈的)弹出菜单中可以看到刚才在1界面中加的那个方法的名称(下图中红色圈里),然后如下图一样连线,弹出菜单选择manual

  (3)给2视图的unwind segue取一个名字叫from2to1如下图,等会会用到。

  (4)同理从3视图返回到1视图,也是右键3界面上方的Exit弹出菜单中可以看到刚才在1界面中加的那个方法的名称,然后连线,弹出菜单选择manual,给3视图的unwind segue取一个名字叫from3to1  (5)我们给2视图和3视图中的“2退至1”、“3退至1”的按钮加上事件代码,这里就用到了给unwind segue取的名字(也就是identifier)

- (IBAction)back:(id)sender {  //执行segue跳页的方法[self performSegueWithIdentifier:@"from2to1" sender:nil];
}

- (IBAction)back:(id)sender {  //执行segue跳页的方法  [self performSegueWithIdentifier:@"from3to1" sender:nil]; }

  (6)再打开ViewController1.m,找到刚才加的那个方法,往里面加一些代码,可以根据unwindSegue.identifier判断从哪个界面退回到1的

//其他界面返回到此界面调用的方法- (IBAction)ViewController1UnwindSegue:(UIStoryboardSegue *)unwindSegue {if ([unwindSegue.identifier isEqualToString:@"from2to1"]) {_lbShowMessage.text = @"从2退到1";} else if ([unwindSegue.identifier isEqualToString:@"from3to1"]) {_lbShowMessage.text = @"从3退到1";}
}

好了,运行一下,达到了我们要的效果。

三、附加知识

  返回按钮事件甚至可以一行代码都不用写,下面演示从3返回到2

  (1)打开需要返回到的界面ViewController2.m,加上下面方法,返回类型一定是IBAction,参数类型一定是UIStoryboardSegue,名称随便

//其他界面返回到此界面调用的方法- (IBAction)ViewController2UnwindSegue:(UIStoryboardSegue *)unwindSegue {if ([unwindSegue.identifier isEqualToString:@"from3to2"]) {_lbShowMessage.text = @"从3退到2";}
}

  (2)右键3界面上方的Exit弹出菜单如下图,因为是返回到2,所以选择2界面的那个方法然后连线,这次是连到button,这样button事件就不用代码写了,给unwind segue取一个名字叫from3to2

  (3)我现在不给“3退至2”这个按钮加事件代码,就可以点击它返回到2了,运行一下试试。

  结束:附上demo链接https://github.com/zhanglinfeng/ZLFSegueDemo

转载于:https://www.cnblogs.com/zhanglinfeng/p/4973602.html

iOS9 Storyboard unwind segue反回传递事件时机详细步骤相关推荐

  1. iPhone刷机iOS9 Beta和iWatch刷机watchOS2 Beta详细步骤

    最近在开发iWatch项目,鉴于watchOS1系统的各种限制,根本没有办法满足需求,所以本妹纸就想刷个watchOS2玩玩.刷机过程那叫一个纠结呀...所以就把试水的经过和遇到的各种坑给大家分享下, ...

  2. iOS开发使用Unwind Segue进行返回

    我们在之前的一篇博客中谈到怎样使用dismissViewControllerAnimation()的方法在iOS中返回,如今我们有一个更为方便的方法来实现界面跳转之后的返回操作.使用的是Unwind ...

  3. iOS Storyboard unwind segues使用小结

    使用storyboard开发的时候,经常会在一个scene上添加一个button,再拖拽这个button到某个想要关联的页面,最后选择push的方式跳转.这样scene_A和scene_B就有了一个& ...

  4. Storyboard中segue使用总结

    简介         场景转换在应用中是非常常见的,让用户在一个视图控制器内操作,能够实例化并显示另一个视图控制器,需要创建一个在两者之间相连的segue(转 场).比如导航控制器里面,某个场景中的操 ...

  5. 如何以编程方式执行Unwind segue?

    本文翻译自:How to perform Unwind segue programmatically? Using storyboard this is very easy. 使用情节提要非常简单. ...

  6. IOS Modal Segue和Unwind Segue的使用Demo-附完整工程

    原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 本Demo的内容很简单,两个View,各含有textfield,第一个V ...

  7. 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 文章目录 ...

  8. Vue父组件与子组件传递事件/调用事件

    1.Vue父组件向子组件传递事件/调用事件 <div id="app"><hello list="list" ref="child& ...

  9. 学习笔记:VB.net动态添加控件数组并传递事件

    学习笔记:VB.net动态添加控件数组并传递事件 控件数组和事件 "中间人" 动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组 ...

最新文章

  1. python3.7.2怎么安装和管理扩展包_怎么安装python扩展包管理工具pip
  2. 内存分段分页机制理解_深入理解虚拟机,JVM高级特性-自动内存管理机制
  3. 太骚了!Python模型完美切换SAS,还能这么玩。。
  4. HihoCoder - 1873 Frog and Portal(构造+进制拆分)
  5. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
  6. Oracle 10g dbms_rowid 包源码
  7. JS学习总结(3)——运算符/字符串
  8. Fiddler中文版
  9. 【考研数学】函数图像(三角函数、幂函数、指数函数等)
  10. 云计算大佬必看|IDC主机销售管理系统详细对比评测
  11. Python中URL的编码和解码:quote, unquote, urlencode
  12. android 常用action和category
  13. 计算机主机自动关机如何设置,如何设置电脑自动关机
  14. installshield java_使用InstallShield打包java程序exe以及jdk,安装完成自动运行
  15. WAIC | 阿里龙志勇:云游戏量变进行时,与元宇宙有什么关系?
  16. android 多开app store,原来 iOS 也有双开助手,还是上架了苹果官方 App Store 的
  17. 后端 php mysql_搭建并部署PHP + MySQL后端环境
  18. 数学建模算法与应用:综合评价与决策方法(1)理想解法
  19. 大学三年积累的教学资源分享和推荐!
  20. 网上书城原型界面样式编写(1)

热门文章

  1. 设计模式之模版方法模式的钩子方法
  2. lamaba中reduce方法将集合中的所有整数相加,并返回其总和
  3. 利用局域网性能测试仪保障企业网络环境
  4. Linux基础知识整理
  5. MVC、 MVP、 MVVM之间的区别
  6. JDK 8 新特性 之 default关键字
  7. SpringBoot 配置多数据源
  8. keynote使用手册_如何使用Keynote和智能手机为AR创建原型
  9. 如何高效学习前端新知识,我推荐这些~
  10. Java应用集群下的定时任务处理方案(mysql)