我在应用程序第一次运行时创建了一个具有向导的应用程序。 之后,它应该呈现一个UITabBarController。
用户第二次运行应用程序时,它应该只显示UITabBarController。
由于UITabBarController应该是rootViewController,有没有办法重新定义应用程序rootViewController,所以当向导结束时,TabBarController出现了?
或者有更好的方法来实现这种行为吗?
谢谢!
答案 0 :(得分:1)
使用unwind segue。在展示您的应用程序时,将UITabBarController
推送到导航堆栈。如果这是您的应用程序的第一次运行,请在按下选项卡栏控制器时禁用动画,然后在其顶部按下向导的第一个屏幕。如果不是第一次运行,请使用动画推动标签栏控制器。
当用户完成向导完成后,使用展开segue返回标签栏控制器。
答案 1 :(得分:1)
是的,您可以从当前显示的任何控制器重新定义窗口的根视图控制器。您可以使用self.view.window获取对窗口的引用。因此,当向导结束时,只需实例化标签栏控制器并更改根目录:
UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"tbc"]; // or other instantiation method if not using a storyboard
self.view.window.rootViewController = tbc;
在app delegate中,输入逻辑以确定这是否是第一次运行应用程序,如果没有,请运行此略微修改的代码以直接启动标签栏控制器:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UITabBarController *tbc = [sb instantiateViewControllerWithIdentifier:@"tbc"]; // or other instantiation method if not using a storyboard
self.window.rootViewController = tbc;