IOS传值之Block传值(二)
@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传值(二)的更多相关文章
- IOS笔记047-代理传值和block传值
在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...
- OS笔记047代理传值和block传值
在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...
- 属性传值,协议传值,block传值,单例传值四种界面传值方式
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...
- iOS传值之block传值(一)
ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入 ...
- iOS中使用block传值
转自:http://blog.sina.com.cn/s/blog_60b45f230100yiaf.html 用此方法传值可以替代委托了.具体例子: MainView.h #import <U ...
- iOS 页面间传值 之 单例传值 , block 传值
ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...
- ios常见的页面传值方式
iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值 ...
- iOS的四种传值方式
传值有四种方法 : 1. 属性传值 2. 单例传值 3. 代理传值 4. block传值 一.属性传值 (前-->后) 1. 后面的界面定义一个属性 存放前一个界面传过来的值 ...
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值) 使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...
随机推荐
- [PCB设计] 3、用CAM350修改GERBER文件(删除某些部分)
1.问题产生 由于在电子元件封装时阻焊开窗未处理好,生成的GERBER文件在生产钢网时容易出现错误.比如:测试点上不需要上锡,如果封装元件时采用焊盘修改而来,结果往往使paste层在该测试点上有覆盖, ...
- SLF4J 使用简记
SLF4J 使用简记 使用 SLF4J有一段时间了,在此作上些许记录,以作提示. 本文使用的实际实现的日志框架是 Log4j,所以使用 log4j.properties 文件 SLF4J 需要引入的j ...
- String类之substring--->查找某位置对应的字
以下方法都是java内置类String类的内置方法(不是构造方法哦,就是普通的方法),不需要我们写,直接拿过来用即可. substring方法对应Api介绍 查找字符串中的 从int beginI ...
- js--学习方法之2-转
再说几点忠告 1,不要着急看一些复杂网页效果的代码,这样除了打击你自信心,什么也学不到.没达到一定的武功水平,割了小JJ也学不会葵花宝典的. 2,别急着加技术交流QQ群,加牛人QQ.如果你找张三丰交流 ...
- js--数组去重3种方法
js数组去重的三种常用方法总结 第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存 ...
- javascript 拖放效果
最近一直在看javascript的书籍,有些东西在书上看着貌似理解了,但是在真正动手实践时,其实有些细节你根本不了解.所以看起来就算是一个简单的效果,写起来也未必简单,就算写起来简单,写的代码也未必规 ...
- LeetCode OJ 45. Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- GitHub赠送DigitalOcean优惠码100美元
著名的项目托管网站GitHub本周联合DigitalOcean VPS和NameCheap送给学生福利了!十余种产品免费拿!包括免费赠送digitalocean优惠码价值100美元!以及nameche ...
- linux 安装与启动nginx
linux系统为Centos 64位 一.去http://nginx.org/download/上下载相应的版本下载nginx-1.8.0.tar.gz(注:还有更高版本的). 二.解压 tar -z ...
- redis数据类型:sets
sets类型及操作: set是集合,它是string类型的无序集合.set是通过hash table实现的, 添加.删除和查找的复杂度都是O(1).对集合我们可以取并集.交集.差集. 通过这些操作我们 ...