1

我正在为 ios5 开发一个基于故事板的项目,到目前为止它运行良好,但我想在用户退出时保存用户的状态,以便当他们返回应用程序时,我可以将他们跳回他们离开时所在的故事板。

我的理解是,当您浏览故事板时,它会创建一个 UIViewController 堆栈,因此当您关闭当前控制器时,它知道要显示哪个控制器。但是,如果我在应用程序启动时以编程方式跳转到情节提要中的 UIViewController 之一,它就不会有那个历史记录、那个控制器堆栈来回溯。如果不出意外,如果两个控制器在情节提要中的某个点连接到同一个控制器,它就不知道该回到哪个控制器。

处理这个问题的正确方法是什么?我是否只是通过故事板到用户停止的地方,向每个 UIViewController 呈现动画设置为 NO 直到我到达用户所在的那个?(如果是这样,存储该信息的最佳方式是什么?是否有任何方法/类可以帮助解决这个问题,或者我是否正在滚动自己的方式通过情节提要存储它们?)

4

1 回答 1

0

一种选择是使用NSUserDefaults。您无法将 的确切实例准确地保存在UIViewControllers磁盘上,并像在内存中一样检索它们。发生的情况是,您应该以某种方式(例如键/值)识别您感兴趣并希望保存其状态的每个视图控制器。此外,您需要键入要保存其状态的每个元素,然后使用NSUserDefaults.

例如,假设您有这样的层次结构:

HomeView > ListOfNotes > NoteAtIndexPath:x

并且用户正在查看 NoteAtIndexPath:x,并且我们假设字体大小是动态的,因此用户可以在查看时将其放大或缩小。您可以定义两个键:IndexOfLastNoteViewedLasFontSizeViewed,并保存它们:

 [[NSUserDefaults standardUser] setInteger:5 forKey:IndexOfLastNoteViewed];
 [[NSUserDefaults standardUser] setFloat:17.0 forKey:LasFontSizeViewed];

当应用程序再次启动时,您可以检查键,并以编程方式浏览到 HomeView > ListOfNotes > NoteAtIndexPath:5。

以下是一些可能对您有所帮助的链接:

于 2012-02-21T18:00:59.220 回答