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在两个界面之间的传值: 先说一下思想: ...
随机推荐
- openstack私有云布署实践【12.2 网络Neutron-controller节点配置(办公网环境)】
网络这一块推荐使用的是 Neutron--LinuxBirdge的Ha高可用,此高可用方案对Public作用不是很大,Public只用到DHCP,而Private则会用到L3 Agent,则此方案是有 ...
- Tomcat server.xml UTF-8配置
Tomcat server.xml UTF-8配置 <Connector port="8080" maxThreads="150" minSpareThr ...
- PRG(Post/Redirect/Get)
转自:PRG(Post/Redirect/Get) 摘要: Post/Redirect/Get 简称PRG,是一种用来防止表单重复提交数据的一种Web设计模式 Post/Redirect/Get 简称 ...
- 3DTouch--2
苹果太贱了! 3D Touch 只能在真机上面试,模拟器没办法玩! ------------- 描述有点粗燥.....有6S 在手上玩得童鞋会更加清楚,只有玩过才更加体验到. 首先 有几个要知道的手势 ...
- CentOS安装Ruby组件
ruby安装#安装ruby组件yum install ruby ruby-irb ruby-devel rubygems rpm-build -y#安装Apache服务器yum install htt ...
- mysql查超过15分钟未付款的订单,更新为失效状态
个人打开自己的订单时,才检查超过15分钟未付款的订单, 暂不使用机器人,更新状态, Difference counter 差分计数器订单超过15分钟.mysql的时间戳差分比较 $sql = TIM ...
- MSSQL记录
批量添加: DECLARE @GID INT,@UID INT,@Indexs INTSET @GID=1SET @UID=37SET @Indexs=0WHILE @GID<674 --674 ...
- List container
//List容器 //List本质是一个双向链表 //构造函数 list<int>c0; //空链表 list<int>c1(3); //建一个含三个默认值是0的元素链表 li ...
- Objetive-C 中的相等比较
1.== 用于比较两个对象的地址是否相同 1)需要注意的是相同的短字符串,一定大小整数(nsnumber),Objetive-C 底层会做cache,两个对象,指向同一个地址. 例如: NSStrin ...
- openwrt增加串口登录需要密码
https://wiki.openwrt.org/doc/howto/serial.console.password Openwrt 串口默认是没有密码的.Openwrt启动后,一个默认的密码将被启用 ...