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在两个界面之间的传值: 先说一下思想: ...
随机推荐
- CentOS6.3配置SVN之subversion1.7.7
今天配置了 SVN 记在这儿 备忘: 1. 下载 svn 软件包和依赖包 cd /mydata/soft wget http://labs.mop.com/apache-mirror/subversi ...
- hdu1002
//c//https://github.com/ssdutyuyang199401/hduacm/blob/master/1002.c#include<stdio.h>#include&l ...
- Failed to read candidate component class包冲突解决方法
该类问题出现错误有两个可能,第一JAR包错误,第二就是我们的System library版本不正确导致的问题.
- children
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> ...
- jquery无法为动态生成的元素添加点击事件的解决方法
遇到 jquery无法为动态生成的元素添加点击事件,谷歌一下,整理一下解决方法如下: (<li>中间的元素是动态生成的), 现在想为<i>添加点击事件, 例子如下: <d ...
- 浙大pat 1062题解
1061. Dating (20) 时间限制 50 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Sherlock Holmes ...
- LeetCode OJ 289. Game of Life
According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a cellul ...
- 评测:VPS推荐digitalocean和Vultr和Linode
美国vps推荐三家,分别是digitalocean.vultr和linode,拥有很高的性价比,中国访问速度快.我是上面三家的早期用户,并且一直使用至今,积累了不少使用经验. DigitalOcean ...
- 高精度运算专题2-减法运算(The subtraction operation)
这个专题呢,我就来讲讲高精度的减法,下面是三个计算减法的函数,第一个函数是char类型的,要对字符串进行数字转换,而第二个是两个int类型的数组,不用转换成数字,第三个则更为优化,用a数组-b数组放回 ...
- UIButton的属性设置
1.背景颜色 btn.backgroundColor = [UIColor redColor]; 2.给按钮添加文字并添加显示状态 [btn setTitle@"播放" forS ...