iOS中详解Block作为property属性实现页面之间传值
时间:2019-04-13
本文章向大家介绍iOS中详解Block作为property属性实现页面之间传值,主要包括iOS中详解Block作为property属性实现页面之间传值使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们可以把Block当做Objective-C的匿名函数。Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观。另外,block的实现具有封闭性(closure),而又能够很容易获取上下文的相关状态信息。定义Block变量,就相当于定义了一个函数。但是区别也很明显,因为函数肯定是在-viewDidLoad方法外面定义,而Block变量定义在了viewDidLoad方法内部。当然,我们也可以把Block定义在-viewDidLoad方法外部,例如上面的代码块printNumBlock的定义,就在-viewDidLoad外面。
第二个viewcontroller控制第一个button的title
跳转的时候,button的selector()
- (void)SecondVc{ SecondViewController *svc = [[SecondViewController alloc] init]; // Block 传值 svc.secondBlock = ^(){ NSLog(@"First->Second"); [self.button setTitle:@"23" forState:UIControlStateNormal]; }; [self.navigationController pushViewController:svc animated:YES]; }
第二个viewcontroller.h的声明:
typedef void (^SecondController)(); @interface SecondViewController : UIViewController /** block */ @property (nonatomic, copy) SecondController secondBlock; @end
第二个viewcontroller.m的touchesBegan方法:
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSLog(@"second view controller"); if (_secondBlock) { _secondBlock(); } }
- Spring思维导图,让Spring不再难懂(ioc篇)
- 基于dba_hist_sqlstat查看sql语句的性能历史(r4笔记第92天)
- 思维导图学 Maven
- 浅析Java RTTI 和 反射的概念
- 结合EM快速解决复杂的配置问题(r4笔记第91天)
- 散列算法与散列码
- Linux 日常使用小记.
- SQL优化二(SQL性能调优)
- database replay基础学习(r4笔记第90天)
- Vivotek 摄像头远程栈溢出漏洞分析及利用
- 03.HTML头部/CSS/图像/表格/列表
- 巧用flashback database实现灵活的数据切换(r5笔记第9天)
- 01.HTML教程/简介/基础
- 大型分布式网站架构技术总结
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- php基础教程 第十一步 面向对象
- php基础教程 第十一步 面向对象补充
- Serverless|Framework——图文玩转 AWS Lambda
- C++入门指南及实战 第一步 概述及经典HelloWorld
- C++入门指南及实战 第二步 HelloWorld及扩展详解
- 依托于GitLab持续集成基础配置和使用
- C++入门指南及实战 第三步 基本变量
- 最全总结 | 聊聊 Python 数据处理全家桶(配置篇)
- FlexSDK工具包的介绍与编译使用
- 《零基础看得懂的C语言入门教程 》——(二)C语言没那么难简单开发带你了解流程
- Ansible自动化运维学习笔记5
- Ansible自动化运维学习笔记4
- 《零基础看得懂的C语言入门教程 》——(三)轻轻松松理解第一个C语言程序
- Python自动化运维2
- AirTest 基本使用及框架浅剖析——五分钟上手制作游戏辅助