IOS 6 UI状态保存与恢复
2013-11-07 19:52
357 查看
在IOS6中,apple提供了一些API使得UI状态保持和恢复变得很容易。我们可以在以下三个地方实现状态保持和恢复:
1、应用程序委托对象;
2、视图控制器;
3、自定义视图;
为了测试这个功能,我们定义一个简单的界面(一个UILabel和一个UITextField),测试保持和恢复textfield中的内容。
首先在Interface Builder的Scene中选中View Controller,打开标识检查器,设置Restoration ID(恢复标识)为viewController。恢复标识是IOS6为了实现UI状态保持和恢复添加的设置项目。
其次,还需要在AppDelegate中做一些修改,代码如下:
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中添加以下代码:
在IOS6之后,视图控制器都添加了两个方法——encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:,用来实现该视图控制器中控件或数据的保存和恢复。
encodeRestorableStateWithCoder:方法在保存时调用,[coder encodeObject:self.textfield.text forKey:@"encodeKey"]是按照指定的键保存文本框的内容;decodeRestorableStateWithCoder:方法在恢复时调用,[coder deocdeObjectForKey:@"encodeKey"]在恢复文本内容时调用。保存和恢复事实上就是向一个归档文件中
编码和解码的过程。
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中添加以下代码:
-(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"]; }
在IOS6之后,视图控制器都添加了两个方法——encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:,用来实现该视图控制器中控件或数据的保存和恢复。
encodeRestorableStateWithCoder:方法在保存时调用,[coder encodeObject:self.textfield.text forKey:@"encodeKey"]是按照指定的键保存文本框的内容;decodeRestorableStateWithCoder:方法在恢复时调用,[coder deocdeObjectForKey:@"encodeKey"]在恢复文本内容时调用。保存和恢复事实上就是向一个归档文件中
编码和解码的过程。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- IOS开发环境windows化攻略
- 探讨Android与iOS,我们将何去何从?
- IOS 身份证校验详细介绍及示例代码
- iOS NSDate中关于夏令时的坑
- iOS内存错误EXC_BAD_ACCESS的解决方法
- 从 Auto Layout 的布局算法谈性能
- 浅谈 MVC、MVP 和 MVVM 架构模式
- 深入解析 ObjC 中方法的结构
- 你真的了解 load 方法么?
- 从源代码看 ObjC 中消息的发送
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)
- ios开发UIImage imageNamed方法的误用