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++中 ...
随机推荐
- :active 为什么在ios上失效
:active是针对鼠标,而手机上是没有鼠标,而是touchstart,所以早成了ios上不兼容 解决方法是: window.onload = function(){ document.body.ad ...
- varnish4.0 流程图以及说明
varnish 中的内置变量 req repos client server bereq beresp bereq bereq.http.HEADER 由varnish发往backend server ...
- l创建Excel文件
最近的项目中遇到需要将List<Map<String,String>>存储到Excel文件中,为满足此需求设计实现了如下函数: /** * 将MapList转化为Excel文件 ...
- swift 判断字符串长度
projectName.lengthOfBytes(using: String.Encoding(rawValue: String.Encoding.utf16.rawValue)) > 0
- python numpy包
在numpy包中我们可以用数组来表示向量,矩阵和高阶数据结构 首先导入numpy包: from numpy import* 初始化numpy数组有多种方式,比如说 1.python列表或元祖 2.使用 ...
- 2-MySQL数据库编码uft-8
mysql> show variables like 'character%'; mysql> show variables like 'collation%'; mysql> st ...
- Learning From Data 第一章总结
之前上了台大的机器学习基石课程,里面用的教材是<Learning from data>,最近看了看觉得不错,打算深入看下去,内容上和台大的课程差不太多,但是有些点讲的更深入,想了解课程里面 ...
- 在windows通过visual studio远程调试linux mono程序
本文参考文章 https://github.com/techl/MonoRemoteDebugger 1.通过连接https://github.com/techl/MonoRemoteDebugger ...
- CentOS手动编译安装gcc
最近尝试了fedora.ubuntu.mint.debian.opensuse等多种linux发行版,与CentOS比较之后还是感觉之前用的CentOS比较熟悉,比较习惯.现在CentOS的最新版本为 ...
- app加固
为什么要加固APP? 答:因为黑客通过反编译APK得到源码后,会在应用中插入代码,获取利益,比如添加广告,盗取用户账号.密码,后台定制活动等. 反编译的方法? 反编译是指apk文件通过反编译工具( ...