IOS 6 UI状态保存与恢复
来源:互联网 发布:网络批发服装 编辑:程序博客网 时间:2024/05/16 11:24
在IOS6中,apple提供了一些API使得UI状态保持和恢复变得很容易。我们可以在以下三个地方实现状态保持和恢复:
1、应用程序委托对象;
2、视图控制器;
3、自定义视图;
为了测试这个功能,我们定义一个简单的界面(一个UILabel和一个UITextField),测试保持和恢复textfield中的内容。
首先在Interface Builder的Scene中选中View Controller,打开标识检查器,设置Restoration ID(恢复标识)为viewController。恢复标识是IOS6为了实现UI状态保持和恢复添加的设置项目。
其次,还需要在AppDelegate中做一些修改,代码如下:
- - (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
- {
- return YES;
- }
- -(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
- {
- return YES;
- }
- -(void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder
- {
- [coder encodeFloat:2.0 forKey:@"version"];
- }
- -(void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder
- {
- float version=[coder decodeFloatForKey:@"version"];
- NSLog(@"last versio==%f",version);
- }
application:shouldSaveApplicationState:方法在应用退出时调用,负责控制是否允许保存状态,返回YES表示保存,NO表示不保存。
application:shouldRestoreApplicationState:方法在应用启动时调用,负责控制是否恢复上次退出时的状态,返回YES表示可以恢复,NO,表示不恢复。
application:willEncodeRestorableStateWithCoder:方法在保存时调用,在这个方法中实现UI状态或数据的保存,其中[coder encodeFloat:2.0 forKey:@"version"]语句是保存简单数据。
application:didDecodeRestorableStateWithCoder:方法在恢复时调用,在这个方法中实现UI状态或数据的恢复,其中[coder decodeFloatForKey:@"versionn"]语句用于恢复上一次保存的数据。
上面是在AppDelegate中保存数据的方法,要想实现具体界面中控件的保持和恢复,还需要在它的视图控制器中做一些事情。我们在ViewController.m中添加以下代码:
- <span style="font-size:18px">-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
- {
- [super encodeRestorableStateWithCoder:coder];
- [coder encodeObject:self.textfield.text forKey:@"encodeKey"];
- }
- -(void)decodeRestorableStateWithCoder:(NSCoder *)coder
- {
- [super decodeRestorableStateWithCoder:coder];
- self.textfield.text=[coder decodeObjectForKey:@"encodeKey"];</span>
- }
在IOS6之后,视图控制器都添加了两个方法——encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:,用来实现该视图控制器中控件或数据的保存和恢复。
encodeRestorableStateWithCoder:方法在保存时调用,[coder encodeObject:self.textfield.text forKey:@"encodeKey"]是按照指定的键保存文本框的内容;decodeRestorableStateWithCoder:方法在恢复时调用,[coder deocdeObjectForKey:@"encodeKey"]在恢复文本内容时调用。保存和恢复事实上就是向一个归档文件中 编码和解码的过程。
- IOS 6 UI状态保存与恢复
- IOS 6 UI状态保存与恢复
- IOS学习路线:IOS UI状态保持与恢复
- Android状态保存与恢复
- Activity : 状态保存与恢复
- iOS应用状态保存和恢复
- IOS 实现UI状态保持和恢复
- Activity状态的保存与恢复
- Android基础之状态保存与恢复
- 保存与恢复activity的状态
- standupTimer项目中的状态恢复与保存
- canvas中的状态保存与恢复
- canvas中的状态保存与恢复
- QPainter 的状态保存与恢复
- Android保存状态(onSaveInstanceState)与恢复状态(onRestoreInstanceState)
- iOS中cookie的保存与恢复
- iOS开发那些事--iOS6 UI状态保持和恢复
- iOS开发那些事--iOS6 UI状态保持和恢复
- mysql-5.5.25-winx64安装与介绍
- 阿里巴巴2015研发工程师笔试题,带答案
- 求最大值的方法
- c# 接口interface 入门
- 直方图均衡化过程
- IOS 6 UI状态保存与恢复
- 最近最近
- 【调研】特殊网络图像的敏感词检测,图像文本检测提取
- 怎么检测jquery库是否加载
- int sqrt(int x)
- PAT1010. 一元多项式求导 (25)
- HDU 4571Travel in time 最短路+01背包
- github 学习
- 1016