2010-02-17 82 views
0

您好我想创建一个应用程序和我的应用程序记住最后一次用户操作,这意味着用户发现自己在上次他运行应用程序时在同一页。 怎么可能实现呢?iPhone应用程序与记住最后一次用户操作

+0

@Juan:小心解释这个问题的相关性? – Sampson 2010-02-18 00:23:38

回答

1

您可以使用NSUserDefaults为您的应用程序存储一些变量,以在应用程序关闭后检索它们。 对于为例:

// Set the name of the view 
[[NSUserDefaults standardUserDefaults] setObject:@"viewName" forKey:@"lastViewName"]; 

为了获取用户的最后一个动作:

// Retrieve the last view name 
NSString *lastViewName = [[NSUserDefaults standardUserDefaults] stringForKey:@"lastViewName"]; 

但您可以添加其他的不是一个字符串。


编辑:

定义一些常量就像一个在头文件:

#define HOME_VIEW 0 
#define VIEW1 1 
#define VIEW2 2 

当一个观点是加载您存储电流恒定,以您的standardUserDefaults。例如,厂景:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Set the name of the view 
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:VIEW1] forKey:@"lastView"]; 

} 

当你的应用程序并加载您找回您的常数,你加载相应的视图:

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    // Retrieve the last view name 
    NSInteger constantView = [[NSUserDefaults standardUserDefaults] integerForKey:@"lastView"]; 

    switch(constantView) { 
     case HOME_VIEW : //load your UIViewController 
      break; 
     case VIEW1 : // load your VIEW1 
      break; 
     //... 
    } 
} 

我还没有测试此代码,但它是类似的东西做。

+0

谢谢..但是有一些问题!viewName是我的nib视图吗?我可以做什么,如果我想从任何视图加载,并且应该在applicationDidFinishLaunching上的代码?并且xcode编译器告诉我lastViewName是未使用的变量! 对不起iam新iphone sdk – Momi 2010-02-17 16:26:24

+1

NSUserDefaults允许您存储对象,它是NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary的实例。 所以你可以存储你的nibname或另一个常量的字符串。当你的应用程序开始时,你检索字符串或常量,你必须使用它来加载你的UIViewController。 lastViewName是一个未使用的变量,因为您必须在代码中使用它来加载相应的ViewController。 – 2010-02-17 17:25:46

+0

谢谢Yannick,但是你能编辑你的文章并写下整个代码吗?在.h和.m上? – Momi 2010-02-18 11:30:19

1

使用应用程序委托和覆盖的方法:

- (void)applicationWillTerminate:(UIApplication *)application 

在这里,你可以保存它的观点是最后一个可见的,什么状态时,它是(如果需要其他的意见,以及),并坚持它。

然后,当您再次启动您的应用程序时,您将加载保存的状态并使用它来确定哪个视图应该可见。

有几种方法可以在iPhone SDK中保存数据,因此请阅读this guide以获取有关如何执行此操作的更多信息。