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在两个界面之间的传值: 先说一下思想: ...
随机推荐
- 网络最大流最短增广路Dinic算法模板
#include<cstdio> #include<cstring> #include<string> #include<cmath> #include ...
- A * B Problem Plus
A * B Problem Plus 题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1402 FFT(模板题) (FFT的详细证明参见算法导 ...
- 安装Python package
下载对应的源码,往往都是.tar.gz,.zip的压缩包,解压. 打开windows的cmd,切换到对应目录 C: cd C:\xx setup.py install
- ggplot2 theme相关设置—矩形设置(rect)
在主题设置中,rect设置主要用于设置图例和面板 element_rect(fill = NULL, colour = NULL, size = NULL, linetype = NULL, colo ...
- POJ 1860 Currency Exchange(SPFA+邻接矩阵)
( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...
- infix expression 计算完全版
#include<iostream> #include<stack> #include<string> using namespace std; char comp ...
- 优化SQLServer数据库加快查询速度
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- 使用 mulan-1.5.0 如何构造.arff文件
1. 为什么要使用mulan 我用mulan来做多标签数据的分类,但是mulan的输入数据由两个文件控制,一个是data.arff文件,这个文件列出的所有的属性以及这些属性值的类型和他们对应的值.la ...
- JS全选
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- Announcement
本来是习惯把每天的内容写在一个txt里. 似乎不符合要求.无论格式还是内容.于是转战blog. 事实上.有专业课学习加上马上考四级以及下学期可能的专业调整.此学期时间紧张. 能完成日常作业并掌握周课内 ...