(这是我第一次在StackOverflow上提问,如有问题请见谅)
我的问题归结为无法正确恢复UITabBarController. 这是一个基于选项卡的应用程序,我没有使用故事板。
我选择了状态恢复。我已经ViewController在各自的init方法中为我的所有自定义s 提供了唯一的恢复标识符和恢复类。
至于UITabBarController,我在创建时为其提供了唯一的恢复标识符。因为我没有给它一个恢复类,所以我在app委托中实现了以下代码:
- (UIViewController *)application:(UIApplication *)application viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder
{
UITabBarController *vc = [[UITabBarController alloc] init];
vc.restorationIdentifier = [identifierComponents lastObject];
if ([identifierComponents count] == 1) {
self.window.rootViewController = vc;
}
return vc;
}
Run Code Online (Sandbox Code Playgroud)
我在其他app中也用过同样的方法来恢复NavigationControllers的状态,一切都很顺利。但是,当我使用 为这个应用程序执行此操作时TabBarController,应用程序启动时为空TabBarController(TabBarController已恢复,但不会恢复它的子视图控制器)。
这对我来说并不是一个巨大的冲击,我想只是本质上UITabBarControllers 不会保留对其子视图控制器的引用,而不是用于状态恢复的选定选项卡索引。但是,尽管在网上搜索了很多小时,但我无法获得有关如何保留 a TabBarController(without storyboard)状态的任何说明。任何有关如何做到这一点的帮助将不胜感激。
再次,如果我没有提供足够的细节或不够清楚,我很抱歉。请让我知道您在答案中需要什么,我会提供。我知道我没有提供很多代码,但我真的只需要有关如何在没有故事板的情况下保留基于 Tab 的应用程序状态的说明。它不需要根据我的具体情况量身定制;我将能够自己应用一般过程。
谢谢!