iOS开发页面之间的几种传值方式
2015-08-19 22:32
274 查看
@第一种:属性传值
应用场景: 从前一个页面向后一个页面传值
1.在后一个页面中写属性
2.在前一个页面中为属性赋值(在页面切换的时候)
3.在后一个页面使用值
@第二种:代理传值
应用场景: 从后一个页面向前一个页面传值
1.后一个页面要制定协议, 写delegate属性, 让delegate执行协议方法
2.前一个页面成为后一个页面的代理, 遵守协议, 实现协议方法
注: 属性传值和代理传值是线性的只能从前一个页面把值传给后一个页面, 或者从后一个页面把值传给前一个页面;
@第三种: 单例
单例是一种设计模式, 用单例模式设计出来的类生成的对象只能有一个.
使用单例需要注意的:
1.一旦用单例模式设计的类, 不能使用dealloc, 也不能使用init方式创建对象
2.单例内不要存过大得数据
(写个例子)使用单例的时候自己写创建对象的方法:
下面的代码是 .h文件中的声明
下面的代码是在 .m文件中的实现
@第四种: block传值
应用场景: 只要能用delegate传值就能写成block传值, 从后一个页面向前一个页面传值;
1.在后一个页面, 重命名block类型, 写block属性, 调用block;
2.在前一个页面, 个block赋值
3.优化: 把block赋值封装起来
应用场景: 从前一个页面向后一个页面传值
1.在后一个页面中写属性
2.在前一个页面中为属性赋值(在页面切换的时候)
3.在后一个页面使用值
@第二种:代理传值
应用场景: 从后一个页面向前一个页面传值
1.后一个页面要制定协议, 写delegate属性, 让delegate执行协议方法
2.前一个页面成为后一个页面的代理, 遵守协议, 实现协议方法
注: 属性传值和代理传值是线性的只能从前一个页面把值传给后一个页面, 或者从后一个页面把值传给前一个页面;
@第三种: 单例
单例是一种设计模式, 用单例模式设计出来的类生成的对象只能有一个.
使用单例需要注意的:
1.一旦用单例模式设计的类, 不能使用dealloc, 也不能使用init方式创建对象
2.单例内不要存过大得数据
(写个例子)使用单例的时候自己写创建对象的方法:
下面的代码是 .h文件中的声明
//创建对象的方法 //1.类方法 //2.返回值类型是当前类 //3.方法名以 shared/main/default + 类名 + (CCDataHandle *)sharedDataHandle;
下面的代码是在 .m文件中的实现
/** static修饰的变量, 只能被初始化一次, 并且存放在静态区, 当程序结束内存才被释放 *static CCDataHandle *dataHandele = nil; */ static CCDataHandle *dataHandele = nil; + (CCDataHandle *)sharedDataHandle { if (dataHandele == nil) { dataHandele = [[CCDataHandle alloc] init]; //封装数据 [dataHandele createData]; } return dataHandele; }
@第四种: block传值
应用场景: 只要能用delegate传值就能写成block传值, 从后一个页面向前一个页面传值;
1.在后一个页面, 重命名block类型, 写block属性, 调用block;
2.在前一个页面, 个block赋值
3.优化: 把block赋值封装起来
相关文章推荐
- iOS Parse教程——如何使用Parse在iOS应用创建后台服务
- 开启/关闭 iOS 原生 左滑动 pop 视图功能
- [IOS]CoreAnimation基础[翻译2部分]
- iOS中的BASE64编码和MD5编码使用
- iOS项目开发实战——制作视图的平移动画以及解决移动异常问题
- iOS项目的目录结构
- [IOS]CoreAnimation基础[翻译1部分]
- iOS动画——CoreAnimation
- UVA 11111-Generalized Matrioshkas(栈)
- iOS学习笔记6-关于NSNotificationCenter及同步异步
- ios 导航控制器
- IOS-笔记9(多MVC,View间转换)
- ios文件管理
- iOS -归档
- ios 控制器的生命周期
- ios-GCD详解
- ios FMDB 的运用总结
- iOS - 中三种定时器的用法NSTimer、CADisplayLink、GCD
- iOS使用NSMutableAttributedString实现富文本
- ios开发之xib的详细加载过程