开启状态保存和恢复
将下列两个方法添加到AppDelegate.m文件的application delegate中
<span style= "font-size: 14px;" >- ( BOOL )application:(UIApplication *)application shouldSaveApplicationState:( NSCoder
*)coder
{ return
YES ;
} - ( BOOL )application:(UIApplication *)application shouldRestoreApplicationState:( NSCoder
*)coder
{ return
YES ;
}</span> |
Restorationldentifier
UIKite
并没有自动存储所有关于应用状态的信息。你需要告诉UIKit你的哪些视图控制器需要参与进去。你要通过给storyboard中这些视图控制器分派一个Restoration
Identifier来实现它。任何拥有Restoration ID的内容都会被保护并且恢复。
到目前为止这一步,系统只能帮你恢复到具体一个视图控制器,然后重新生成控制器里的对象
要让系统知道你需要保存哪些对象,你需要实现两个方法
<span style= "font-size: 14px;" >- ( void )encodeRestorableStateWithCoder:( NSCoder
*)coder
{ [ super
encodeRestorableStateWithCoder:coder];
[coder encodeObject: self .doorPhoto forKey:@ "doorPhoto" ];
} - ( void )decodeRestorableStateWithCoder:( NSCoder
*)coder
{ [ super
decodeRestorableStateWithCoder:coder];
self .doorPhoto = [coder decodeObjectForKey:@ "doorPhoto" ];
}</span> |
当在程序中按下home键的时候,就会调用encodeRestorableStateWithCoder:来保存你想要保存的对象,再下一次打开程序的时候,就会调用decodeRestorableStateWithCoder:来恢复你之前保存好的对象。