天天看点

iOS - PassData前言1、复合传值2、单例传值3、NSUserDefaults 传值4、代理传值5、Block/闭包 传值

页面传值:

复合传值

单例传值

userDefaults 传值

代理传值

Block/闭包传值

复合 - 正向传值

1、接收方,头文件中创建可存放传递值的属性变量

2、发送方,包含接收方的头文件

3、发送方,实例化接收方对象,并设置其属性变量的值

4、接收方,将此属性变量的值输出

Objective-C

Page2.h

Page1.m

Page2.m

Swift

Page2.swift

Page1.swift

单例 - 正/反向传值

1、创建单例类,并在其头文件中创建可存放传递值的属性变量

2、发送方,包含单例类头文件

3、发送方,创建单例类对象,并为其属性变量赋值

4、接收方,包含单例类头文件

5、接收方,创建单例类对象,取其属性变量的值,输出

创建单例类

SingleClass.h

SingleClass.m

Page3.m

Page4.m

SingleClass.swift

Page3.swift

Page4.swift

NSUserDefaults - 正/反向传值

1、发送方,创建 userDefaults,并以一个固定的 key 值存储数据,发送传递值

2、发送方,创建 userDefaults 同步数据

3、接收方,创建 userDefaults,并以相同的 key 值读取数据,接收传递值

Page5.m

Page6.m

Page5.swift

Page6.swift

代理 - 反向传值

1、创建代理协议,并在协议中创建协议方法

2、委托方:发送方,包含协议头文件

3、委托方:发送方,创建代理人属性变量

4、委托方:发送方,调用协议方法,发送传递值

5、代理方:接收方,遵守代理协议

6、代理方:接收方,实例化发送方对象,并设置其代理人为 self

7、代理方:接收方,实现代理协议中的方法,接收传递值

创建协议

PageDelegate1.h

Page8.h

Page8.m

Page7.m

PageDelegate1.swift

Page8.swift

Page7.swift

代理 - 反向传值,代理封装

4、委托方:发送方,声明重构的 init 初始化方法

5、委托方:发送方,重构 init 初始化方法

6、委托方:发送方,调用协议方法,发送传递值

7、代理方:接收方,遵守代理协议

8、代理方:接收方,用重构初始化方法实例化委托方对象,并设置其代理人为 self

9、代理方:接收方,实现代理协议中的方法,接收传递值

PageDelegate2.h

Page10.h

Page10.m

Page9.m

PageDelegate2.swift

Page10.swift

Page9.swift

代理 - 双向传值

PageDelegate3.h

Page16.h

Page16.m

Page15.m

block/闭包 - 反向传值

1、发送方:创建 block/闭包 类型的变量

2、发送方:调用 block/闭包,发送传递值

3、接收方:实例化发送方对象,并实现其 block/闭包,接收传递值

Page12.h

Page12.m

Page11.m

Page12.swift

Page11.swift

block/闭包 - 反向传值,block/闭包 封装

2、发送方:声明重构 init 初始化方法

3、发送方:重构 init 初始化方法

4、发送方:调用 block/闭包,发送传递值

5、接收方:用重构初始化方法实例化发送方对象,并实现其 block/闭包,接收传递值

Page14.h

Page14.m

Page13.m

Page14.swift

Page13.swift

block/闭包 - 双向传值

Page18.h

Page18.m

Page17.m