StoryBoard学习(5):使用segue页面间传递数据

函数:

C代码  
  1. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

具体例子:

1.首先创建1个Single View模版项目,然后在MainStoryboard中添加1个新的ViewContronller。并在2个View Controller中添加标签、按钮、编辑输入框。

2. 将第1页和第2页建立segue。

选中第1页中的按钮[跳到第2页],鼠标右键(或按住Controll键,鼠标左键)拖拽到第2页后,放手,在弹出菜单上选择[modal]

3. 将第1页中的编辑输入框组件与class文件挂钩。

单独窗口打开MainStoryboard和ViewController.h文件,然后鼠标右键拖拽编辑输入框到.h文件中的@interface的下一行。

注意,编辑输入框组件的name属性这里设置为 page1Data

4.在ViewController.m中添加如下代码。

在@implementation之后添加:

C代码  
  1. @synthesize page1Data;

重载prepareForSegue方法:

C代码  
  1. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  2. NSString* data = page1Data.text;
  3. UIViewController* view = segue.destinationViewController;
  4. if ([view respondsToSelector:@selector(setParam:)]) {
  5. [view setValue:data forKey:@"param"];
  6. }
  7. }

注意:其中的setParam和param会和下面的代码进行关联!!

5.添加新类文件并绑定给第2页。

注意:Class名为 SecondViewController

将类SecondViewController绑定到第2页.

6.将第2页中的编辑输入框组件绑定到类SecondViewController中。

单独窗口打开SecondViewController.h和MainStoryboard,然后选中第2页中的编辑输入框,然后鼠标右键拖拽编辑输入框到SecondViewController.h文件中的@interface的下一行。

注意:绑定时编辑输入框组件的name属性设置为 page2Data。

7.修改SecondViewController的.h和.m文件。

7.1 修改SecondViewController.h

@interface SecondViewController : UIViewController之后添加:

C代码  
  1. @property (strong, nonatomic) NSString *param;

注意:这里定义的参数 param 必须和前面ViewController.m中的prepareForSegue方法中的param相同!!!

7.2 修改SecondViewController.m

在@implementation SecondViewController之后添加:

C代码  
  1. @synthesize param;
  2. @synthesize page2Data;

修改方法viewDidLoad:

C代码  
  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. // Do any additional setup after loading the view.
  5. page2Data.text=param;
  6. }

编译运行,当在第1页中输入参数,跳到第2页后可以显示第1页中输入的参数。

8. 给第2页中的按钮[关闭窗口]添加事件。

单独窗口打开SecondViewController.h和MainStoryboard,然后选中第2页中的按钮[关闭窗口],右键拖拽到SecondViewController.h中@interface SecondViewController : UIViewController之后;

在弹出窗口的Connection属性选择Action,Name属性设置为closeWin。然后点按钮[Connect]。

可以看到,在SecondViewController.h中增加了如下代码:

C代码  
  1. - (IBAction)closeWin:(id)sender;

在SecondViewController.m中增加了如下代码:

C代码  
  1. - (IBAction)closeWin:(id)sender {
  2. }

修改 SecondViewController.m中的closeWin方法,具体代码如下:

C代码  
  1. - (IBAction)closeWin:(id)sender {
  2. [self dismissViewControllerAnimated:YES completion:nil];
  3. }

编译运行,当显示第2页后,点击[关闭窗口]按钮,即可关闭第2页,重新显示第1页。

接下来,要实现在第2页修改接收到的参数,然后将修改后的参数返回给第1页。

9. 修改 ViewController.h和.m文件内容。

9.1 ViewController.h

在 @interface ViewController : UIViewController 之后添加:

C代码  
  1. @property (strong,nonatomic) NSString* editData;

注意:定义的变量 editData 是用来接收 第2页编辑输入框的内容,在 SecondViewController.m会用到!!!

9.2 ViewController.m

在 @implementation ViewController 之后添加:

C代码  
  1. @synthesize editData;

修改方法 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

C代码  
  1. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  2. NSString* data = page1Data.text;
  3. UIViewController* view = segue.destinationViewController;
  4. if ([view respondsToSelector:@selector(setParam:)]) {
  5. [view setValue:data forKey:@"param"];
  6. }
  7. if ([view respondsToSelector:@selector(setFirstViewController:)]) {
  8. [view setValue:self forKey:@"firstViewController"];
  9. }
  10. }

注意:其中的 setFirstViewController 和 firstViewController 在下面的 SecondViewController.h和.m中会定义!!!

重载方法 -(void)viewWillAppear:(BOOL)animated :

C代码  
  1. -(void)viewWillAppear:(BOOL)animated{
  2. NSLog(@"viewWillAppear");
  3. [super viewWillAppear:animated];
  4. page1Data.text=editData;
  5. }

10. 修改 SecondViewController.h和.m文件内容。

10.1 SecondViewController.h

在 @interface SecondViewController : UIViewController 之后添加:

C代码  
  1. @property (strong,nonatomic) id firstViewController;

注意:变量名称 firstViewController必须和上面ViewController.m中相同!!!

10.2 SecondViewController.m

在  @implementation SecondViewController 之后添加:

C代码  
  1. @synthesize firstViewController;

重载方法 -(void)viewWillDisappear:(BOOL)animated

C代码  
  1. -(void)viewWillDisappear:(BOOL)animated{
  2. [super viewWillDisappear:animated];
  3. if ([firstViewController respondsToSelector:@selector(setEditData:)]) {
  4. [page2Data endEditing:YES];
  5. [firstViewController setValue:page2Data.text forKey:@"editData"];
  6. }
  7. }

注意:其中的  setEditData 和  editData 必须和上面 ViewController.h和.m中定义的相同!!!

OK,编译运行。第1页的输入文字会传递到第2页的输入框中,第2页的输入框文字在关闭窗口后同样会传递给第1页的输入框中。

原文:http://stephen830.iteye.com/blog/1696614

StoryBoard学习(5):使用segue页面间传递数据相关推荐

  1. 使用Cross-Page Postback(跨页面提交)在页面间传递数据

    页面间传递数据的几种方法 在页面间传递数据时,我们有以下几种选择: 1.Query String 一个很常见的方法,Query String是URL中问号之后的那一部分.其优点在于它是轻量级的,不会给 ...

  2. 如何在微信小程序的页面间传递数据?

    知晓程序注: 我们在之前发布过小程序页面传值方法的 ,说明了在小程序开发中,两种常见的页面之间传值方法. 本期,「知晓程序」为你带来的是「倒数记日」小程序开发者带来的,小程序开发中,有关页面间数据传递 ...

  3. Windows Phone 几种页面间传递数据的方式

    首先,我们要引用:using Microsoft.Phone.Shell; 第一种: // 导航到新页面 NavigationService.Navigate(new Uri("/Detai ...

  4. php 数据分别是怎么传的_四种php页面间传递数据方法

    我们定义page01.php和page02.php两个php文件,将page01中的内容想办法传递到page02,然后供我们继续使用. 第一种: 使用客户端浏览器的cookie.cookie很容易理解 ...

  5. react-native页面间传递数据的几种方式

    1. 利用react-native 事件DeviceEventEmitter 监听广播 应用场景: - 表单提交页面, A页面跳转到B页面选人, 然后返回A页面, 需要将B页面选择的数据传回A页面. ...

  6. java 两个页面传递数据,请问Cookie怎么在两个页面间传递数据?

    参考代码如下: //如果请求的Cookie对象为空 if (Request.Cookies["userCookie"] == null) { //创建一个Cookie对象 Http ...

  7. 浅谈ASP中Web页面间的数据传递

    [简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...

  8. js 不同页面间传递值并取值

    原博主地址:http://blog.csdn.net/web_xyk/article/details/47857033 以前没用到过页面间传递参数再从后台获取数据,然后搜索了一下. 发现了一个比较好的 ...

  9. ios页面间传递参数四种方式

    ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...

最新文章

  1. 单链表-删除单链表L中第一个值为x的结点(双指针法)
  2. 【我的技术我做主】笑谈PHPer水平区分
  3. 【最大团】【HDU1530】【Maximum Clique】
  4. 如何区分Oracle的数据库,实例,服务名,SID
  5. 在线做计算机考研题,2018年计算机考研真题及参考答案
  6. linkedhashset_Java LinkedHashSet contains()方法与示例
  7. 环信SDK 踩坑记webIM篇(三)
  8. c#异常类的闰年判断
  9. 腾讯回应封杀区块链公号;红芯服务国企非因浏览器;苹果弃用高通芯片 | 极客头条...
  10. 蒸汽密度的计算公式_蒸汽密度计算公式.doc
  11. SSM+MySQL实现在线考试系统(含源码、MySQL、文档,包运行)
  12. linux嵌入式做智能家居,嵌入式系统在智能家居中的应用
  13. 关于XP、2k、98的互访的问题的总结
  14. 哇呼IM即时通讯系统——技术解析
  15. HTTP请求的过程与TCP连接的过程
  16. 增加seo好感度,wordpress给文章增加og协议,即meta标签形式如 meta property=”og:
  17. 计算机基础知识赏花主观题,计算机学院学生制作校园赏花地图
  18. AD 脚本kixtart运用之四(用户桌面背景)
  19. 业务巡检系统的整体设计和数据流程
  20. 数学符号 参考手册大全

热门文章

  1. php simpletest 测试数据库,在PHP中使用SimpleTest进行单元测试
  2. matlab反馈模型,—倒立摆状态反馈系统的建模及matlab仿真.docx
  3. Window10设置护眼色
  4. Vue入门一、常用的指令
  5. Java、Python、Go 哪个后端编程语言适合web前端工程师学习?
  6. Gif(1)-加载视图-交替圆效果
  7. C Primer Plus 第6章 C控制语句:循环 6.9 选择哪种循环
  8. Linux 按键定时器去抖
  9. Netbeans ClassFormatException: Invalid byte tag in
  10. 确定NTFS权限应用的位置