您的位置:首页 > 其它

记忆恢复页面

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时,默认显示的是我们上一次访问的页面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: