2012-01-19 28 views
1

我有一个应用程序在创建视图时填充列表视图。我希望能够使用后退按钮进行导航并返回到前一个屏幕,并让列出的数据仍然存在。这可能吗?可以使用导航栏返回到上一个视图,而不会丢失视图的数据?

基本创建后退按钮似乎正在发生的事情是,当我按下它时,视图像全新的一样启动,期待数据输入来填充列表。是否可以保存前一个屏幕的状态?而不是被抹去,并且在使用后退按钮时必须重新填充?我宁愿不必ping每一次用户按下后退按钮的服务器。特别是如果数据已经被抓取一次。

换句话说,我希望它像网络浏览器一样工作,屏幕的状态被保存,然后按回来加载那里的内容,而不是再次对网站的所有数据执行ping操作。

谢谢。

回答

0

您可以也使用NSUserDefaults来存储数据,而不是核心数据。这取决于您计划存储的数据。

更新1 下面是一个例子使用NSUserDefaults

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray* recentlyViewedPhotos = [[defaults objectForKey:@"recentlyViewedPhotos"] mutableCopy]; 
//Edit your object here 
[defaults setObject:recentlyViewedPhotos forKey:@"recentlyViewedPhotos"]; 
[defaults synchronize]; 
+0

如果NSUserDefaults可以处理数组,它可能会工作。 (它看起来可以)我将不得不玩弄一些并找出答案。核心数据比我需要的要复杂一点。 –

+0

我已经将NSArray的NSArray存储到NSUserDefaults中,没有任何问题。 –

+0

我在某处读过数组的内容。如果我有一个类的数组,它会抛出它,因为它不是NSUserDefaults所喜欢的值的数组吗?即。字符串,数据,int等 –

2

绝对有可能。最好的方法是将核心数据中的列表数据存储起来,然后当您的视图出现时,您可以检查是否保存了数据,如果没有,则转到网络并填充数据。

+0

通过核心数据你的意思是某种全局类的?我曾想过这个解决方案,但我更多地问,是否有某种方法可以将视图的状态保存在内存中,然后回想一下......或类似的东西。 –

+0

查看[核心数据编程指南](http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/cdprogrammingguide.html)。基本上,不是自定义如何存储每个视图控制器的状态,而是存储用于生成视图的数据,并在每次创建视图时从数据存储重新加载 – wattson12

相关问题