IOS 6 UI状态保存与恢复
2014-10-21 21:33
393 查看
在IOS6中,apple提供了一些API使得UI状态保持和恢复变得很容易。我们可以在以下三个地方实现状态保持和恢复:
1、应用程序委托对象;
2、视图控制器;
3、自定义视图;
为了测试这个功能,我们定义一个简单的界面(一个UILabel和一个UITextField),测试保持和恢复textfield中的内容。
首先在Interface Builder的Scene中选中View Controller,打开标识检查器,设置Restoration ID(恢复标识)为viewController。恢复标识是IOS6为了实现UI状态保持和恢复添加的设置项目。
其次,还需要在AppDelegate中做一些修改,代码如下:
[objc] view
plaincopy
- (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中添加以下代码:
[objc] view
plaincopy
<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"]在恢复文本内容时调用。保存和恢复事实上就是向一个归档文件中
编码和解码的过程。
1、应用程序委托对象;
2、视图控制器;
3、自定义视图;
为了测试这个功能,我们定义一个简单的界面(一个UILabel和一个UITextField),测试保持和恢复textfield中的内容。
首先在Interface Builder的Scene中选中View Controller,打开标识检查器,设置Restoration ID(恢复标识)为viewController。恢复标识是IOS6为了实现UI状态保持和恢复添加的设置项目。
其次,还需要在AppDelegate中做一些修改,代码如下:
[objc] view
plaincopy
- (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中添加以下代码:
[objc] view
plaincopy
<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开发那些事--iOS6 UI状态保持和恢复
- IOS 实现UI状态保持和恢复
- IOS学习路线:IOS UI状态保持与恢复
- iOS应用状态保存和恢复
- iOS开发那些事--iOS6 UI状态保持和恢复
- iOS开发那些事--iOS6 UI状态保持和恢复
- iOS开发那些事--iOS6 UI状态保持和恢复 推荐
- HTML5 Cavans(4) 保存和恢复Cavans状态
- TreeView控件保存恢复结点展开状态
- java 对象序列化实现复杂UI对象状态的保存。
- Canvas 状态的保存和恢复实例【每日一段代码25】
- onSaveinstancestate 保存和恢复activity的状态数据
- saveInstallState参数使用详解(android activity状态保存和恢复)
- Asp.net Page 状态保存与恢复
- Android保存状态(onSaveInstanceState)与恢复状态(onRestoreInstanceState)
- 保存程序的UI状态
- oracle恢复到原始状态需保存的文件
- 在ROMMON状态下恢复IOS的方法
- asp.net的页面状态保存与恢复