block 常用于反向传值

声明

返回值类型 (^block)(参数列表)

调用

闭包的名字=^(参数列表){};

闭包的名字();

如:

void(^aaaaa)(int num,NSString *Sring);

aaaaa=^(int num,NSString *string){

NSLog(@"%d,%@",num,string);

};

aaaaa(120,@“www");

block实现反向传值

(1)用属性实现:

1.在.h文件声明:@property(nonatomic,copy)void(^block)(NSString * Nametexts);

2.在.m文件声明block的值:-(void)back:(UIButton *)sender{

self.block (sender.titleLabel.text);

[self dismissViewControllerAnimated:YES completion:nil];

}

3.在另一个ViewController.m中导入第一步的.h文件,之后:-(void)gonext{

nextViewController *next = [[nextViewController alloc]init];

next.block =^(NSString * Nametexts){

label.text =Nametexts;(这里的Nametexts可以命名为别的名字,不影响传值)

};

[self presentViewController:next animated:YES completion:nil];

(2)用方法实现:1.在ViewController1.h 声明方

法:-(void)tou:(void(^)(NSString *message))block;

2.在ViewController1.m 调用这个方法:-(void)tou:(void(^)(NSString *message))block{

block(@"大黄牛");

}

3.在ViewController.m中导入ViewController1.h  之后在- (void)viewDidLoad 输入:ViewController1 *v1 = [[ViewController1 alloc]init];

[v1 tou:^(NSString *message) {

NSLog(@"%@",message);

}];

注意:1.修改Block外部变量的时候 需添加__block 修饰。

如:__block UIImage *image = nil;

imageNameBlock =^(NSString *imageName){

image = [UIImage imageNamed:imageName];

self.view.backgroundColor = [UIColor colorWithPatternImage:image];

};

imageNameBlock (@"头像.jpg");

2.声明的 block为 全局变量时

block会被循环引用 因此要用 __weak 弱引用

例: __weak ViewController *vis = self;

__block UIImage *image = nil;

imageNameBlock =^(NSString *imageName){

image = [UIImage imageNamed:imageName];

vis.view.backgroundColor = [UIColor colorWithPatternImage:image];

};

IOS- 最简单的反向传值- block的更多相关文章

  1. ios 得用代理反向传值

    应用场景:有时时候从界面A跳转到界面B,界面B在返回的时候须要将处理的结果传递给A. 实现思路:1,定义一个负责传值的协义,界面A拥有该协义属性,并实现该协义中的方法 2.界面B也拥有该协义属性(代理 ...

  2. block 反向传值回调

    /** *  block 反向传值回调 */ //在第二个控制器中 //   (1)声明block,在基类中已写好 //   (2)写好传值方法 //(1) typedef void (^Return ...

  3. iOS Block界面反向传值

    在上篇博客 <iOS Block简介> 中,侧重解析了 iOS Block的概念等,本文将侧重于它们在开发中的应用. Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C ...

  4. IOS Block 反向传值

    1.在需要像上一个界面传值的.h 文件实现代理方法 @property (nonatomic, copy) void(^isOpenHandler)(BOOL) ; 2.在执行操作的时候需要江操作的结 ...

  5. 使用block进行界面之间的反向传值

    目标:在两个独立的控制器的界面之间进行反向传值 关键技术:block 代码编写及运行环境:Xcode6.4 / 模拟器8.4 语言:Objective-C 注:使用纯代码实现,不使用xib/story ...

  6. iOS 页面间几种传值方式(属性,代理,block,单例,通知)

    第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视 ...

  7. iOS 代理反向传值

    在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳转到界面B,在界面B的 ...

  8. 代理和block反向传值

    代理传值: // SendViewController.h #import <UIKit/UIKit.h> @protocol SendInFor <NSObject> -(v ...

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

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

随机推荐

  1. iOS开发—字典转模型,KVC设计模式

    iOS开发UI基础—字典转模型 开发中,通常使用第三方框架可以很快的实现通过字典转模型,通过plist创建模型,将字典的键值对转成模型属性,将模型转成字典,通过模型数组来创建一个字典数组,通过字典数组 ...

  2. Open War I: 怪物繁殖,行走仿真,瞄准射击...

    See below demo: Share the source codes with your guys. >>>download this "hacking meat& ...

  3. 偶遇mysql外键不好使

    原来是创建表时选择的类型不一样,应该是innoDB,而且关联的主表类型也必须是innoDB

  4. ASP.NET MVC- EF基础

    EF是在ADO.NET的基础上做进一步封装,以后如果做新的项目我可能会考虑不用ADO.NET,而用EF. 其实很久以前我就接触过EF,可是太久没用,有些忘记了,前几天重温,也做了一点笔记.记录如下: ...

  5. Azure 云服务中的实例端点

    Azure云服务(cloud Servive)中有三种端点类型(endpoint type):输入端点(input);内部端点(internal);实例端点(InstanceInput) 1.输入端点 ...

  6. The Sorrows of Young Werther

    The Sorrows of Young Werther J.W. von Goethe Thomas Carlyle and R.D. Boylan Edited by Nathen Haskell ...

  7. 【转】使用junit进行单元测试(初级篇)

    转自:http://blog.csdn.net/andycpp/article/details/1327147 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在 ...

  8. windows7下硬盘安装ubuntu14.04

    windows7 ubuntu1404双系统 准备软件 安装步骤 step 1 step 2 step 3 step 4 windows7 + ubuntu14.04双系统 准备软件 1)grub4d ...

  9. 【39】明智而审慎第使用private继承

    1.private继承意味着,根据某物实现出,继承父类的实现,关闭父类的接口,并不是Is-A的关系,不满足里氏代换,继承的内容访问权限都修改为private. 2.那么问题来了,复合也表达根据某物实现 ...

  10. IOS - 常用宏定义和功能方法

    可能不定期添加新的东西 github地址:https://github.com/yuqingzhude/CommonUseDemo /************************Tools**** ...