在为以下“问题”选择“正确”解决方案时,我需要一些帮助。
我使用新的故事板功能将我的应用程序的所有屏幕链接在一起。基本上,结构深入到:
[导航控制器] => [视图控制器#1] => [标签栏控制器] => [视图控制器#2]*
**(以及其他一些暂时不重要的选项卡)*
我已将第一个视图控制器 (#1) 的 segue (push) 附加到选项卡栏控制器后面的视图控制器。当用户在第一个控制器上按下某些东西并且工作正常时,会触发此推送。
// Execute preset segue
[self performSegueWithIdentifier:@"segueEventDetail" sender:self];
当用户(现在在 View Controller #2 中)按下导航栏中的后退按钮时,用户会返回。假设他现在再次触发 segue,第二个视图控制器再次显示,但现在“重置”(空)。(我相信在阅读了几篇论坛和文章后,这是使用 segue 时的标准行为,因为它们每次都会破坏并重新初始化视图控制器?)
这(视图控制器被重置)造成了一个问题,因为第二个视图控制器的内容是动态的(取决于来自服务器的 JSON 响应),因此“需要”视图控制器保持完整(或恢复)时用户回来了。
我找到了几个描述同一问题的来源(见底部),但解决方案各不相同,我需要一些帮助来选择正确的。
总结:
- 当用户按下时,我如何“保留”/保存视图控制器的状态,同时保留故事板的使用,最好还有 Segue 的
自己的想法:
#1我现在正在考虑将 JSON 响应缓存到我的单例类(并从那里到 PLIST),并在第二个视图控制器中检查此数据是否存在,然后重建视图,然后检查任何新数据(恢复正常运行)。
#2我正在考虑的另一个是“绕过”segue 并手动处理视图切换,部分解释在(故事板 - 参考 AppDelegate 中的 ViewController)中 - 这也可能吗?
但也许有更简单/更好的选择?
http://www.iphonedevsdk.com/forum/iphone-sdk-development/93913-retaining-data-when-using-storyboards.html Storyboard - 参考 AppDelegate 中的 ViewController 如何序列化一个 UIView?