基于 Storyboard 的 TabBar 应用程序上的状态恢复在自动恢复后切换回主屏幕

Posted

技术标签:

【中文标题】基于 Storyboard 的 TabBar 应用程序上的状态恢复在自动恢复后切换回主屏幕【英文标题】:State Restoration on a Storyboard based TabBar App Swaps Back to Main Screen after Restore Automatically 【发布时间】:2012-10-11 15:00:12 【问题描述】:

我正在尝试步入 ios6 的新状态恢复功能。我有一个使用 Storyboard 的现有基于 TabBar 的应用程序。我设置了根标签栏和故事板加载的每个***视图控制器的恢复 ID,包括嵌入式导航控制器。

我通过应用委托选项选择加入。然后,当我选择另一个选项卡栏视图时,发送到后台并通过 Xcode 停止并重新启动,我得到以下行为。

它会按预期启动到先前选择的屏幕,但稍后会切换到主(主)屏幕。

我的理解是,如果它是一个标签栏控制器,只需设置根控制器,我就可以在没有任何代码的情况下恢复选定的索引。

如果我使用标签栏控制器模板创建一个全新的项目,这不会有任何问题,即它会恢复选定的控制器并保持此选择。

我尝试注释掉我的整个常用启动选项,整个视图确实加载/确实出现在主视图控制器上,认为它在某种程度上产生了影响,但结果是一样的。

什么是进一步调试的好方法?注意:我没有实现任何视图控制器特定的状态更改。在这种情况下,我只是想记住最后选择的视图作为起点。我尝试了不同的视图作为退出点,结果是一样的,无论最后一个视图在启动时短暂显示,然后切换到主屏幕。

顺便说一句,注意到 WWDC 2012 视频正在演示强制退出以测试现在不起作用的状态恢复。根据文档,这将清除状态,这就是我的经验。我按照文档中的建议通过 Xcode 停止。

【问题讨论】:

【参考方案1】:

我忘记了我暂时将返回设置为 no 以下选择加入方法。我的错。有趣的是,如果我将此设置为 NO,它会暂时返回闪烁最后一个屏幕……

-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder 

return YES;

【讨论】:

以上是关于基于 Storyboard 的 TabBar 应用程序上的状态恢复在自动恢复后切换回主屏幕的主要内容,如果未能解决你的问题,请参考以下文章

IOS-Storyboard控制器切换之TabBar

Xcode中不用Storyboard,用纯xib创建TabBar模式视图

iOS开发之--使用storyboard下,tabbar小图标和文字颜色的设置

在核心数据中存储标签栏标签顺序

使用 TabBar 的情节提要参考不显示 TabBar 项目图像和标题

以编程方式将 NavigationController 添加到基于 TabBar 的应用程序