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传值的更多相关文章

  1. 界面通信之block传值

    block传值有两种方式 ⽅式⼀: 使⽤block属性实现回调传值 ⽅式⼆: 在⽅法中定义block实现回调传值 方式一比较便于理解而且常用,下面介绍方式一是如何传值的 使用block属性传值和代理传 ...

  2. 属性传值,协议传值,block传值,单例传值四种界面传值方式

    一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...

  3. iOS Block传值

    上个月,针对block恶补了一下,以为自己全部掌握了,其实不尽然. 昨天项目中在下载的时候用到,自己竟然不知道该从何下手,惭愧~ 情景是这个样子的:我写了个下载类,阴老师在调用时,将参数(sid,UR ...

  4. 代理和 block 传值的使用

    // // ZYViewController.h // BlockTest // // Created by yejiong on 14/11/2. // Copyright © 2014年 zzz. ...

  5. iOS 页面间传值 之 单例传值 , block 传值

    ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...

  6. iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

    iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...

  7. 浅谈Block传值-匿名函数(代码块)

    block传值是从后往前传值---代理也是 // 使用block时, 不能访问self, 也不能直接访问属性, self.属性, 用self调用方法; 只要这样做了, block都会对其强引用一份, ...

  8. OS笔记047代理传值和block传值

    在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...

  9. iOS开发——代理与block传值

    一.代理传值的方法 1.Hehe1ViewController.h中 #import <UIKit/UIKit.h> @protocol Hehe1ViewControllerDelega ...

  10. Block高级用法:Block传值UI_12(3)

    1.简单复习Block的定义.赋值.调用做学习传值铺垫: //声明一个函数 无返无参void printfHello(int a);//函数的实现void printfHello(int a){    ...

随机推荐

  1. 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明

    在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...

  2. PIC32MZ tutorial -- 32-bit Timer

    The microcontroller is PIC32MZ2048ECH144 on the PIC32MZ EC Starter Kit. This microcontroller has fou ...

  3. Linux操作系统奥秘01-系统引导(MBR - 硬盘的0磁道)

    Boot:1.系统PowerOn 2.BIOS在完成硬件初始化以及POST 3.BIOS加载MBR 4.GRUB->GRUB or kernal MBR MBR即主引导记录,是在BIOS中选择的 ...

  4. maven仓库有jar包,还是找不到类

    开始,网上的所有方法都没用. 我用的eclipse-32位的,jdk也是.然后今天换了个sts和jdk.64位的.然后就没有那个问题了.

  5. Egret中的对象池ObjectPool

    为了可以让对象复用,防止大量重复创建对象,导致资源浪费,使用对象池来管理. 对象池具体含义作用,自行百度. 一 对象池A 二 对象池B 三 字符串key和对象key的效率 一 对象池A /** * 对 ...

  6. CentOS和Ubuntu下安装配置Greenplum数据库集群(包括安装包和源码编译安装)

    首先说一下,无论是CentOS/RedHat还是Ubuntu都可以按源码方式.安装包方式编译安装. 1.   规划 192.168.4.93(h93)       1个主master  2个主segm ...

  7. 返回记录结构时,如果需要返回为nil时 应该怎么办。

  8. delphi检查url是否有效的方法

    function CheckUrl(url: string; TimeOut: integer = 5000): boolean;var hSession, hfile, hRequest: hInt ...

  9. 命令行启动win7系统操作部分功能

    control.exe /name microsoft.folderoptions 启动资源管理器的 文件夹属性 选项卡 control.exe /name Microsoft.AddHardware ...

  10. cms替换主页的步骤

    cms替换主页的步骤 .先做好静态页面: .在D:\wamp\www\phpcms\install_package\phpcms\templates文件夹下建新的文件夹tianqiwangluo(项目 ...