记忆恢复页面
2016-02-25 17:04
204 查看
设计目的
让用户在重新启动app时,进入上次用户浏览的页面,方便用户使用。下载体验地址:https://itunes.apple.com/cn/app/ping-an-tian-xia-tong/id743484337?l=en&mt=8(平安天下通)。
设计难点
由于记忆恢复功能是所有页面都要具备的功能,在一个成熟的app中,如何尽量少的影响项目的代码以及开发的工作量,是一个必须考虑的前提。设计思路
1.获取到当前页面的数据。2.存储获得到的数据。
3.初始化数据,恢复当前页面
获取到当前页面的数据
方式一:
1.在TXBaseViewController(基类)增加一个属性@property (nonatomic,strong)NSDictionary *params;用于存放页面数据。2.在push页面时,增加params参数,并且赋值
弊端
1.每一次push到新页面,需要给params参数赋值。对于已经成熟的项目,需要大量的工作量。
2.对于自定义的init方法,不知道如何给params参数赋值。比如[[SFCBubbleChatController alloc] initWithPAGroupModel:groupModel withType:Message_Normal];
方式二
1.在TXBaseViewController增加一个属性@property (nonatomic,strong)NSDictionary *params;用于存放页面数据。2.重写UINavigationController的pushViewController方法
3.通过运行时获取下一个controller的所有属性。
当然啦,我选择第二种方式,可以省去了大量的工作量。
存储获得到的数据params
难点:1.由于params中可能含有对象,所以不可以使用NSUserDefaults存储。
2.如何使用归档的方式存储,但是里面包含的对象是不同的, 应该如何存储呢?
我的设计方式
1.将需要归档的model继承PABaseModel(基类model)
2.让PABaseModel实现NSCopying协议
3.通过运行时获得model的属性。如下图的方法在基类中归档。
恢复页面
1.重写push方法2.通过kvc的方式给controller的属性一一赋值
这样在用户重新启动app时,默认显示的是我们上一次访问的页面。
相关文章推荐
- 自定义UITableView的右侧索引
- PHP之标准类
- 第一行代码-9.2 Android 多线程编程
- Read / Write Excel file in Java using Apache POI
- 全面解析Java的垃圾回收机制
- Android截屏
- Jquery中$(document).ready()和window.onload的区别
- Thread和Runnable差别
- c# 清空txt文本文件的值
- [Castle Windsor]学习依赖注入
- EF优缺点的理解
- android中xml tools属性详解
- HTTP协议(二):header标头说明
- 反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- CodeForces 624 B. Making a String(贪心)
- 一台机器安装多个tomcat服务。Java heap space
- HDU 1054 Strategic Game
- 第三章:mysql proxy负载均衡与读写分离
- "Mac OS X"想要进行更改。键入管理员的名称和密码以允许执行此操作("Mac OS X"想使用系统钥匙串)
- 下载