如何维护特定应用程序的这么多视图的状态

时间:2010-01-14 05:42:17

标签: iphone

我有1个申请。 它有近32个视图在hiereachy与后退按钮。 我想保持每个视图的状态,如果我知道那个视图的状态也保持不变 有没有办法通过代码或设置

来做到这一点

我要求iphone

我的简单问题是,如果我在我的视图中放置两个文本字段,然后我按下主页按钮然后,我移动到另一个应用程序然后再次按下主页按钮然后我移动到我的应用程序,我能够打开我留下的视图,我的文本字段或我填写的任何内容都将被保留

2 个答案:

答案 0 :(得分:0)

在您的应用程序委托-applicationWillTerminate:中,通过例如

保存信息
....
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
[defs setObject:myFirstTextField.text forKey:@"firstTextField"];
[defs setObject:mySecondTextField.text forKey:@"firstTextField"];
...

-applicationDidFinishLaunching:-application:didFinishLaunchingWithOptions:中,按

恢复信息
....
NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
myFirstTextField.text = [defs stringForKey:@"firstTextField"];
mySecondTextField.text = [defs stringForKey:@"firstSecondField"];
...

通常,您可以将要保存和恢复的内容放入NSUserDefaults

答案 1 :(得分:0)

如果在所有视图和视图控制器上实现NSCoding方法,则可以将所有内容保存在可以在以后轻松恢复的键控归档器中。你应该实现

-(void)encodeWithCoder:(NSCoder*)coder

保存所有类的实例变量数据,

-(id)initWithCoder:(NSCoder*)coder

稍后恢复。查看NSCoding文档;应该有关于如何正确实施和使用它的官方苹果指南。

关于这一切的好处是UIView和UIViewController及其子类都实现了这些,因此,例如,如果您对UINavigationController进行编码,您将自动将导航堆栈上存在的所有视图控制器免费编码为好吧,如果您在自己的类中实现NSCoding方法,它应该可以满足您的需求。