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

  当返回上一个界面且需要上一个界面做某事时,用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

时间: 2024-10-21 10:11:27

iOS9 Storyboard unwind segue反回传递事件时机详细步骤的相关文章

storyboard中Unwind segue使用

Unwind segue能被用作导航控制器中的回退,可以有push,modal,和popover三种效果.(效果和直接使用导航控制器的效果相同,不过更加强大). 假设情况A是导航控制器的根控制器,而跟控制器之下有另外的一个B控制器,B之下还有一个C控制器,层次还可以更加的深,从最深层次的控制器回到A 使用Unwind segue可以直接到达,并且只需要在A中创建一个方法类似下面的代码: ? 1 2 3 - (IBAction)unwindToThisViewController:(UIStory

[iOS基础控件 - 6.11.4] storyboard 的 Segue

A.概念 storyboard中的跳转事件连线,都是一个UIStoryboardSegue对象(Segue) 来源控制器 触发控制器 目标控制器 跳转到的控制器 Segue的属性: 每一个Segue对象,都有3个属性唯一标识@property (nonatomic, readonly) NSString *identifier;来源控制器@property (nonatomic, readonly) id sourceViewController;目标控制器 @property (nonatom

关于如何使用代码触发 UIButton的Unwind Segue

当我们在一个控制视图上,在UITextField输入文字信息之后,希望可以使用键盘的Done触发一个 Done的UIButton,但是刚开始我直接在 -(BOOL)textFieldShouldReturn:(UITextField *)textField 内调用按键的行为: - (IBAction)DonePhotoButton:(UIButton *)sender { //代码 } 虽然可以执行到{}内的代码,但是不会触发按键按下之后一个Unwind Segue(解散当前视图,退回上一个视图

iOS Storyboard unwind segues使用小结

iOS Storyboard unwind segues使用小结 转载:http://blog.csdn.net/kid_devil/article/details/23218195 使用storyboard开发的时候,经常会在一个scene上添加一个button,再拖拽这个button到某个想要关联的页面,最后选择push的方式跳转.这样scene_A和scene_B就有了一个“顺序”的跳转方式了.但有时,希望可以从scene_B触发某个action,跳转回scene_A.如果还采用刚才的方式

Storyboard中segue使用总结

简介         场景转换在应用中是非常常见的,让用户在一个视图控制器内操作,能够实例化并显示另一个视图控制器,需要创建一个在两者之间相连的segue(转 场).比如导航控制器里面,某个场景中的操作可以触发转场去加载并显示另一个场景,转场可以将下一个控制器自动推入导航栈. 说明         Xcode6之前Storyboard里面的几种segue区别及视图切换:push.modal.popover.replace和custom可参考:http://www.2cto.com/kf/2012

适配 iOS 8 时遇到的问题两则:远程推送和 Unwind Segue

原文:http://imtx.me/archives/1910.html 昨天我在微博上吐槽:iOS 8 / Xcode 6 真是史上对开发者最糟糕的版本了.收到很多朋友表达同感. 之所以这么说,倒不是针对 iOS 8 本身的特性来说的,相反,iOS 8 开放的那些扩展机制以及各种 Kit 对开发者来说是非常好. 我抱怨的是 Apple 最近对软件质量的控制不太好,上次发一个让手机不工作的 iOS 8.0.1 就不说了,iOS 8 / Xcode 6 本身充满了非常多的 Bug.Xcode 作为

iOS开发使用Unwind Segue进行返回

我们在之前的一篇博客中谈到怎样使用dismissViewControllerAnimation()的方法在iOS中返回,如今我们有一个更为方便的方法来实现界面跳转之后的返回操作.使用的是Unwind Segue.详细实现过程例如以下: (1)分别在两个ViewController中创建一个button.一个作为跳转.一个作为返回,而且链接"跳转"button到第二个ViewController.总体界面布局例如以下: (2)在第一个ViewController中写一个@IBAction

unwind segue

1.modal segue返回时的segue,那么如何定义它呢,我们可以在返回到的controller中定义下面的一个函数: - (IBAction) funcName:(UIStoryboardSegue *)segue { //当modal segue返回时会自动调用此函数 } 2.如何指定unwind segue的触发控件呢?请看下图,右键松开后选择之前定义的funcName:函数即可指定完成. unwind segue,布布扣,bubuko.com

Atitit.  Js 冒泡事件阻止 事件捕获   事件传递  事件代理

Atitit.  Js 冒泡事件阻止 事件捕获   事件传递  事件代理   1. 事件冒泡1 2. 事件捕获1 3. 同时支持了事件捕获阶段和事件冒泡阶段ddEventListener的第三个参数1 4. 事件代理3 5. 冒泡还是捕获?3 6. Js 冒泡事件阻止3 6.1. 返回false5 7. 事件冒泡 使处理函数有范围较大的触发面积,在“拖拽效果”脚本中是必须的5 8. refe6 8.1.1. 浅谈事件冒泡与事件捕获 - ac黄博客精选 - SegmentFault6   1. 事