Block传值
typedef void(^DemoBlock)();
typedef void(^INTBlock)(int a, int b); @property(nonatomic,assign)DemoBlock demoBlock;
@property(nonatomic,assign)INTBlock initBlock; -(void)creatdemoBlock:(DemoBlock)demoBlock InitBlock:(INTBlock)initBlock{
demoBlock();
initBlock(10,20);
} [self creatdemoBlock:^{ NSLog(@"hehehe"); }InitBlock:^(int a, int b) {
NSLog(@"%d",a+b);//30
}];
int (^Myblock)(int,int) = ^(int a , int b){
return a+b;
}; int(^Myblock2)() = ^(){
return 10;
}; int (^Myblock3)() =^{
return 20;
}; NSLog(@"%d",Myblock(10,20));//30
NSLog(@"%d",Myblock2());//10
NSLog(@"%d",Myblock3());//20
self.memberVariable = ;
// NSInteger outsideVariable = 20;//如果不添加_block则block会捕获该值
//添加了_block则会跳过获取后面的值,如果没有则显示此值。
__block NSInteger outsideVariable = ;
NSMutableArray * outsideArray = [[NSMutableArray alloc] init]; void (^blockObject)(void) = ^(void){
NSInteger insideVariable = ;//不会变
NSLog(@" > member variable = %ld", (long)self.memberVariable);//
NSLog(@" > outside variable = %ld", (long)outsideVariable);//有_block:30?20
NSLog(@" > inside variable = %ld", (long)insideVariable);//
[outsideArray addObject:@"AddedInsideBlock"];
}; outsideVariable = ;
self.memberVariable = ; blockObject(); NSLog(@" > %lu items in outsideArray", (unsigned long)[outsideArray count]);
1、在需要回调的B界面:.h
//1、定义一个Block 返回字符串
typedef void(^ReturnTextStr)(NSString*str);
//2、声明一个Block
@property(nonatomic,strong)ReturnTextStr returnStrBlock;
//3、声明一个Block方法
-(void)returenText:(ReturnTextStr)block;
2、在需要回调B界面: .m
//4、
-(void)returenText:(ReturnTextStr)block{
_returnStrBlock = block;
} //5、
- (IBAction)back:(id)sender {
[self dismissViewControllerAnimated:YES completion:^{ if (_returnStrBlock != nil ) {
_returnStrBlock(self.blockTEXT.text);
} }]; }
3、接收返回值得A界面
@interface ViewController (){
BVCViewController*bvc;
} - (IBAction)gotoVC:(id)sender { bvc = [[CViewController alloc]initWithNibName:@"CViewController" bundle:nil]; // 5
[bvc returenText:^(NSString *str) {
self.A.text = str;
}]; [self presentViewController:bvc animated:YES completion:nil]; }
Block传值的更多相关文章
- 界面通信之block传值
block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传 ...
- 属性传值,协议传值,block传值,单例传值四种界面传值方式
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...
- iOS Block传值
上个月,针对block恶补了一下,以为自己全部掌握了,其实不尽然. 昨天项目中在下载的时候用到,自己竟然不知道该从何下手,惭愧~ 情景是这个样子的:我写了个下载类,阴老师在调用时,将参数(sid,UR ...
- 代理和 block 传值的使用
// // ZYViewController.h // BlockTest // // Created by yejiong on 14/11/2. // Copyright © 2014年 zzz. ...
- iOS 页面间传值 之 单例传值 , block 传值
ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...
- iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)
iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值) 使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...
- 浅谈Block传值-匿名函数(代码块)
block传值是从后往前传值---代理也是 // 使用block时, 不能访问self, 也不能直接访问属性, self.属性, 用self调用方法; 只要这样做了, block都会对其强引用一份, ...
- OS笔记047代理传值和block传值
在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...
- iOS开发——代理与block传值
一.代理传值的方法 1.Hehe1ViewController.h中 #import <UIKit/UIKit.h> @protocol Hehe1ViewControllerDelega ...
- Block高级用法:Block传值UI_12(3)
1.简单复习Block的定义.赋值.调用做学习传值铺垫: //声明一个函数 无返无参void printfHello(int a);//函数的实现void printfHello(int a){ ...
随机推荐
- 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...
- PIC32MZ tutorial -- 32-bit Timer
The microcontroller is PIC32MZ2048ECH144 on the PIC32MZ EC Starter Kit. This microcontroller has fou ...
- Linux操作系统奥秘01-系统引导(MBR - 硬盘的0磁道)
Boot:1.系统PowerOn 2.BIOS在完成硬件初始化以及POST 3.BIOS加载MBR 4.GRUB->GRUB or kernal MBR MBR即主引导记录,是在BIOS中选择的 ...
- maven仓库有jar包,还是找不到类
开始,网上的所有方法都没用. 我用的eclipse-32位的,jdk也是.然后今天换了个sts和jdk.64位的.然后就没有那个问题了.
- Egret中的对象池ObjectPool
为了可以让对象复用,防止大量重复创建对象,导致资源浪费,使用对象池来管理. 对象池具体含义作用,自行百度. 一 对象池A 二 对象池B 三 字符串key和对象key的效率 一 对象池A /** * 对 ...
- CentOS和Ubuntu下安装配置Greenplum数据库集群(包括安装包和源码编译安装)
首先说一下,无论是CentOS/RedHat还是Ubuntu都可以按源码方式.安装包方式编译安装. 1. 规划 192.168.4.93(h93) 1个主master 2个主segm ...
- 返回记录结构时,如果需要返回为nil时 应该怎么办。
- delphi检查url是否有效的方法
function CheckUrl(url: string; TimeOut: integer = 5000): boolean;var hSession, hfile, hRequest: hInt ...
- 命令行启动win7系统操作部分功能
control.exe /name microsoft.folderoptions 启动资源管理器的 文件夹属性 选项卡 control.exe /name Microsoft.AddHardware ...
- cms替换主页的步骤
cms替换主页的步骤 .先做好静态页面: .在D:\wamp\www\phpcms\install_package\phpcms\templates文件夹下建新的文件夹tianqiwangluo(项目 ...