iOS9 Storyboard unwind segue反回传递事件时机详细步骤
2015-11-18 10:32
381 查看
当返回上一个界面且需要上一个界面做某事时,用unwind segue实现起来比delegate简单许多,甚至有时不适合用delegate来实现,那么我们就用unwind segue吧,而且像1->2->3这样的跳转,3视图可以通过unwind segue方便的返回到1、2任意界面。下面跟着我一起做吧。
(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)
(6)再打开ViewController1.m,找到刚才加的那个方法,往里面加一些代码,可以根据unwindSegue.identifier判断从哪个界面退回到1的
好了,运行一下,达到了我们要的效果。
(1)打开需要返回到的界面ViewController2.m,加上下面方法,返回类型一定是IBAction,参数类型一定是UIStoryboardSegue,名称随便
(2)右键3界面上方的Exit弹出菜单如下图,因为是返回到2,所以选择2界面的那个方法然后连线,这次是连到button,这样button事件就不用代码写了,给unwind segue取一个名字叫from3to2
(3)我现在不给“3退至2”这个按钮加事件代码,就可以点击它返回到2了,运行一下试试。
结束:附上demo点击打开链接
一、创建如下视图
我的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点击打开链接
相关文章推荐
- EasyUI 之datagrid 使用 【DataGrid属性解释】
- openstack通过qemu-guest-agent在物理机上操作虚拟机
- webpack + babel + vue 环境设置
- UIViewController懒加载模式_易懂版
- UIAlertController的AlertView形式 加输入框 用法
- ArcGIS 10.2 Calculate Value(Data Management) 工具的使用
- Arduino系列教程之 – PWM的秘密
- 关于UIViewController添加UINavigationBar的详细实现方法
- Xcode:CUICatalog: Invalid asset name supplied: (null)
- [转]百度UEditor编辑器(php)
- A cycle was detected in the build path of project
- 会话管理-cookie,session,禁用cookie的URL重写,token的单态设计模式,异常抛出,UUID,MD5,base64编码
- C#后台线程和UI的交互
- Burp Suite使用介绍
- Burpsuite sqlmap插件
- UITabBarController UITabBarItem 终极一法
- 值动画
- Call requires permission which may be rejected by user: code should explicitly check to see if permi
- getRequestDispatcher()与sendRedirect()的区别
- 关于PowerBuilder启动时出现磁盘符号的解决办法