如何跳转到情节提要中的UIViewController并保留导航层次结构



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

我的理解是,当你浏览故事板时,它会创建一堆UIViewControllers,这样当你关闭当前控制器时,它就会知道要显示哪一个。但是,如果我在应用程序启动时以编程方式跳到故事板中的一个UIViewController,它就不会有那个历史,那个控制器堆栈,可以回溯。如果没有别的,如果两个控制器在故事板的某个点上变成同一个控制器,它就不知道该回到哪个

处理这个问题的正确方法是什么?我是否只是浏览故事板到用户停止的地方,向每个UIViewController显示设置为"否"的动画,直到我到达用户所在的位置?(如果是这样的话,存储这些信息的最佳方式是什么?有没有任何方法/类可以帮助实现这一点,或者我是否在故事板中滚动自己的存储方式?)

一个选项是使用NSUserDefaults。您无法将UIViewControllers的确切实例准确地保存在磁盘上,并将其作为内存中的实例进行检索。实际情况是,您应该以某种方式,例如key/value,识别您感兴趣并希望保存其状态的每个viewController。此外,还需要为要保存其状态的每个元素设置关键帧,然后使用NSUserDefaults进行保存。

对于exmaple,假设您有这样的层次结构:

主页视图>Notes列表>NoteAtIndexPath:x

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

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

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

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

  • 应用程序状态
  • 应用程序状态和多任务处理
  • 开始IPhone开发:探索IPhone SDK作者:Dave Mark,Jeff LaMarche--应用程序设置和用户默认设置

相关内容

  • 没有找到相关文章

最新更新