我正在为ios5开发基于故事板的项目,到目前为止它运行良好,但我想在用户退出时保存用户的状态,以便当他们返回应用程序时,我可以将其跳回故事板中他们离开时的位置。
我的理解是,当您浏览故事板时,它会创建一堆UIViewControllers,这样当您关闭当前控制器时,它会知道要显示哪一个。但是,如果我在应用程序启动时以编程方式跳转到故事板中的一个UIViewControllers,那么就不会有那个历史记录,那个堆栈的控制器,以便回溯。如果没有别的,如果两个控制器在故事板中的某个位置进入同一个控制器,它就不会知道要返回哪个控制器。
处理这个问题的正确方法是什么?我是否只是通过故事板到达用户离开的位置,将每个UIViewController的动画设置为NO,直到我到达用户所在的那个? (如果是这样,那么存储这些信息的最佳方式是什么?是否有任何方法/类可以帮助解决这个问题,或者我是否采用自己的方式通过故事板存储它们?)
答案 0 :(得分:0)
一种选择是使用NSUserDefaults。您无法在磁盘上准确保存UIViewControllers
的确切实例,并检索它们就像它们在内存中一样。会发生什么,你应该以某种方式,例如键/值,标识您感兴趣并希望保存其状态的每个viewController。您还需要键入要保存其状态的每个元素,然后使用NSUserDefaults
保存。
例如,假设您有这样的层次结构:
HomeView> ListOfNotes> NoteAtIndexPath:x
并且用户正在查看NoteAtIndexPath:x,并且还假设字体大小是动态的,因此用户可以在查看时使其变大或变小。您可以定义两个键:IndexOfLastNoteViewed
和LasFontSizeViewed
,然后保存它们:
[[NSUserDefaults standardUser] setInteger:5 forKey:IndexOfLastNoteViewed];
[[NSUserDefaults standardUser] setFloat:17.0 forKey:LasFontSizeViewed];
当应用程序再次启动时,您可以检查密钥,并以编程方式浏览到HomeView> ListOfNotes> NoteAtIndexPath:5
以下是一些可能对您有帮助的链接: