@interface QWViewController : UIViewController

@property(nonatomic,strong)UILabel *label;

@property(nonatomic,strong)UITextField *textField;

@end

#import "QWViewController.h"

#import "QWViewControllerTwo.h"

@interface QWViewController ()

@end

@implementation QWViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];

label.backgroundColor=[UIColor blueColor];

self.label=label;

[self.view addSubview:label];

UITextField *textField=[[UITextField alloc]initWithFrame:CGRectMake(100, 200, 100, 50)];

textField.backgroundColor=[UIColor yellowColor];

self.textField=textField;

[self.view addSubview:textField];

UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];

button.frame=CGRectMake(100, 300, 100, 50);

button.backgroundColor=[UIColor blackColor];

[button setTitle:@"jump" forState:UIControlStateNormal];

[button addTarget:self action:@selector(doClicked) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

}

-(void)doClicked{

QWViewControllerTwo *ViewControllerTwo=[[QWViewControllerTwo alloc]init];

ViewControllerTwo.labelText=self.textField.text;//顺传值

//[ViewControllerTwo.label setText:self.textField.text];//注意:这样传值是不对的。

//逆向传值回来

[ViewControllerTwo returnText:^(NSString *showText) {

self.label.text=showText;

}];

[self.navigationController pushViewController:ViewControllerTwo animated:YES];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

#import <UIKit/UIKit.h>

typedef void(^ReturnTextBlock) (NSString *showText);

@interface QWViewControllerTwo : UIViewController

@property(nonatomic,copy)NSString *labelText;

@property(nonatomic,strong)UILabel *label;

@property(nonatomic,strong)UITextField *textField;

@property(nonatomic,copy)ReturnTextBlock returnTextBlock;

-(void)returnText:(ReturnTextBlock)block;

@end

#import "QWViewControllerTwo.h"

@interface QWViewControllerTwo ()

@end

@implementation QWViewControllerTwo

-(UILabel *)label{

if (_label==nil) {

_label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];

}

return _label;

}

-(UITextField *)textField{

if (_textField==nil) {

_textField=[[UITextField alloc]initWithFrame:CGRectMake(100, 200, 100, 50)];

}

return _textField;

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 50)];

label.backgroundColor=[UIColor yellowColor];

label.text=self.labelText;

self.label=label;

[self.view addSubview:self.label];

UITextField *textField=[[UITextField alloc]initWithFrame:CGRectMake(100, 200, 100, 50)];

textField.backgroundColor=[UIColor yellowColor];

self.textField=textField;

[self.view addSubview:textField];

//创建返回按钮

UIButton *backBtn=[UIButton buttonWithType:UIButtonTypeCustom];

[backBtn addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];

[backBtn setTitle:@"back" forState:UIControlStateNormal];

}

-(void)goBack{

[self.navigationController popViewControllerAnimated:YES];

}

//将上一个控制器传过来的block保存在本控制器中,在合适的时候调用

-(void)returnText:(ReturnTextBlock)block{

self.returnTextBlock=block;

}

//在视图将要消失的时候调用本类的block

-(void)viewWillDisappear:(BOOL)animated{

if (self.returnTextBlock !=nil) {

self.returnTextBlock(self.textField.text);//实现是在之前控制器中

}

}

@end

实现效果:

IOS传值之Block传值(二)的更多相关文章

  1. IOS笔记047-代理传值和block传值

    在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...

  2. OS笔记047代理传值和block传值

    在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...

  3. 属性传值,协议传值,block传值,单例传值四种界面传值方式

    一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...

  4. iOS传值之block传值(一)

    ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入 ...

  5. iOS中使用block传值

    转自:http://blog.sina.com.cn/s/blog_60b45f230100yiaf.html 用此方法传值可以替代委托了.具体例子: MainView.h #import <U ...

  6. iOS 页面间传值 之 单例传值 , block 传值

    ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...

  7. ios常见的页面传值方式

    iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值 ...

  8. iOS的四种传值方式

    传值有四种方法 : 1. 属性传值 2. 单例传值 3. 代理传值 4. block传值     一.属性传值   (前-->后) 1. 后面的界面定义一个属性  存放前一个界面传过来的值    ...

  9. iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

    iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...

随机推荐

  1. gitlab自动备份

    1.周期性计划任务: $crontab -e 0 0 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create $service crond res ...

  2. 解决Fileupload 在IE 10 中需要双击的问题

    方法来自于:https://code.google.com/p/primefaces/issues/detail?id=5355 the oncomplete event is working for ...

  3. 全球互联网技术大会GITC 2016 最炫酷技术盛宴

    2016年对于全球互联网产业来说,可谓是不折不扣的"创新爆发年",科技创新的更迭速度和多元化趋势都呈现出全所未见的增长态势.我们看到,云计算.大数据等在多年前萌发的技术创新正在快速 ...

  4. Ajax中参数带有html格式的 传入后台保存【一】

    因业务需求  要讲如下编辑器中带有样式的数据传入数据库保存 第一种方法  json格式传入 $(".privilegezn_page .btn_ok").click(functio ...

  5. POJ 2599 A funny game#树形SG(DFS实现)

    http://poj.org/problem?id=2599 #include<iostream> #include<cstdio> #include<cstring&g ...

  6. IOS 类似网易新闻客户端内容滚动菜单跟随居中组件

    需求分析: 1.类似网易新闻客户端页面滚动组件.菜单栏对应菜单项一直居中 2.点击菜单栏可以切换到对应的page 3.滑动页面可以自动切换相应的菜单.并且对应的菜单栏居中显示 4.初始化时可以自定义菜 ...

  7. RPM安装gcc gcc-c++扩展

    rpm -ivh cpp--.el5.i386.rpm 回车 rpm -ivh kernel-headers--.el5.i386.rpm 回车 rpm -ivh glibc-headers-.i38 ...

  8. ThinkPHP框架基础

    ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...

  9. python [1:3]

    Python下标是以0开始的x[1:3]表示返回集合中下标1至3(不包括3)的元素集合x[:3] 表示返回从开始到下标3(不包括3)的元素集合x[3:]表示返回从下标3到结束的元素集合X[:]表示返回 ...

  10. tableIView 区头的一点问题

    要记得设置区头的高度 否则会出现第一行没区头问题