iOS 使用Block进行逆传值
跟通知一样也是两个控制器,然后代码创建控件直接上代码
#import "ViewController.h"
#import "TwoViewController.h"
@interface ViewController ()
{
UIButton *_nextBtn;
UILabel *_showLabel;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self show];
}
-(void)show{
_nextBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
[_nextBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[_nextBtn setTitle:@"下一个" forState:UIControlStateNormal];
[_nextBtn addTarget:self action:@selector(nextBtnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_nextBtn];
_showLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 300, 100,50)];
[_showLabel setBackgroundColor:[UIColor greenColor]];
[_showLabel setTextColor:[UIColor redColor]];
[self.view addSubview:_showLabel];
}
-(void)nextBtnClick:(UIButton *)nextBtnClick{
TwoViewController * two = [[TwoViewController alloc]init];
two.block = ^(NSString * str){
_showLabel.text = str;
};
[self presentViewController:two animated:YES completion:nil];
}
在TwoViewController.h中
#import <UIKit/UIKit.h>
typedef void (^MyBlock)(NSString *);
@interface TwoViewController : UIViewController
@property(nonatomic,copy)MyBlock block;
@end
在TwoViewController.m中
#import "TwoViewController.h"
@interface TwoViewController ()
{
UIButton *_backBtn;
UITextField *_textField;
}
@end
@implementation TwoViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor];
[self shoulabel];
}
-(void)shoulabel{
_backBtn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
_backBtn.backgroundColor = [UIColor redColor];
[_backBtn setTitle:@"shang" forState:UIControlStateNormal];
[_backBtn addTarget:self action:@selector(shangBtnClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_backBtn];
_textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 400, 250, 35)];
_textField.backgroundColor = [UIColor yellowColor];
[self.view addSubview: _textField];
}
-(void)shangBtnClick:(UIButton *)shangBtn{
[self dismissViewControllerAnimated:YES completion:^{
if (self.block) {
self.block(_textField.text);
}
}];
}




这样就进行了简单的传值
iOS 使用Block进行逆传值的更多相关文章
- iOS Block界面反向传值
在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...
- iOS利用通知逆传值
直接创建两个控制器,点击跳转第二个界面,然后点击按钮进行传值 #import "ViewController.h" #import "TWOOViewController ...
- ios开发 block语句块
ios开发 block语句块 1.block 理解为匿名函数 2.block变量的定义 //定义block变量,^表示定义block //技巧:函数名左右加括号,在函数名前面在加^ void (^bl ...
- iOS中block的用法 以及和函数用法的区别
ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候 MyBlock(); 带参数的 ...
- iOS开发--Block
iOS开发--Block 1.什么是Block,block 的作用 ui开发和网络常见功能实现回调,按钮的事件处理方法是回调方法以及网络下载后的回调处理 (1)按钮 target-action 一 ...
- iOS之block
1. Block的声明和线程安全Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非ARC ...
- iOS开发——Block详解
iOS开发--Block详解 1. Block是什么 代码块 匿名函数 闭包--能够读取其他函数内部变量的函数 函数变量 实现基于指针和函数指针 实现回调的机制 Block是一个非常有特色的语法,它可 ...
- iOS中Block介绍(一)基础
ios开发block的使用指南,以及深入理解block的内存管理,也适用于osx开发.讨论范围:block的使用,内存管理,内部实现.不包含的内容:gc arc下的block内存,block在c++中 ...
- iOS中Block介绍 基础
ios开发block的使用指南,以及深入理解block的内存管理,也适用于osx开发.讨论范围:block的使用,内存管理,内部实现.不包含的内容:gc arc下的block内存,block在c++中 ...
随机推荐
- Linux配置notes
终端支持中文输入: locale-gen en_US.UTF-8 export PYTHONIOENCODING=utf-8 export LANG="en_US.UTF-8" e ...
- 数据库触发器inserted和deleted详解
create trigger updateDeleteTime on user for update as begin update user set UpdateTime=(getdate()) ...
- 搜索引擎Solr系列(一): Solr6.2.1环境搭建
一:Solr简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通 ...
- oracle归档模式和非归档模式的切换
Oracle从未归档日志改成归档日志: SQL> shutdown immediate; 数据库已经关闭. 已经卸载数据库. Oracle 例程已经关闭. SQL> startup mou ...
- linux-------------linux的scp
scp是有Security的文件copy,基于ssh登录. 命令基本格式: scp [OPTIONS] file_source file_target OPTIONS: -v 和大多数 linux 命 ...
- SQL中exists和in比较
in 和exists in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询. 一直以来认为exists 比in 效率高的说法是不准确的.如果 ...
- 夺命雷公狗-----React_native---5---初步读懂代码模式
我们的代码一般导出会用两种方式,如下所示: 这两种方法都是可以的.... 引入方式其实也是很简单的,如下所示: 这样即可...
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- mybatis教程
http://www.yihaomen.com/article/java/302.htm
- Java多线程线程学习(一)
一.操作系统级别的进程与线程1.进程: 一个计算机程序的运行实例.包含了需要执行的指令,有自己的独立地址空间,是互相隔离的.进程拥有各种资源和状态信息,包括打开的文件.子进程和信号处理.2.线程: 表 ...