1

我正在制作一个在应用程序第一次运行时具有向导的应用程序。之后,它应该呈现一个 UITabBarController。

用户第二次运行应用程序时,它应该只显示 UITabBarController。

由于 UITabBarController 应该是 rootViewController,有没有办法重新定义应用程序 rootViewController,所以当向导结束时,TabBarController 会出现?

还是有更好的方法来完成这种行为?

谢谢!!

4

2 回答 2

1

使用unwind segue。在展示您的应用程序时,推UITabBarController送到导航堆栈。如果这是您的应用程序的第一次运行,请在推送标签栏控制器时禁用动画,然后将向导的第一个屏幕推送到它上面。如果不是第一次运行,用动画推送标签栏控制器。

当用户完成向导时,使用展开转场返回标签栏控制器。

于 2013-06-06T15:22:59.590 回答
1

是的,您可以从当前显示的任何控制器重新定义窗口的根视图控制器。您可以使用 self.view.window 获得对窗口的引用。因此,当您的向导结束时,只需实例化您的标签栏控制器并更改根:

UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"tbc"]; // or other instantiation method if not using a storyboard
self.view.window.rootViewController = tbc;

在应用程序委托中,放置确定这是否是应用程序的第一次运行的逻辑,如果不是,则运行此稍作修改的代码以直接启动标签栏控制器:

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;
于 2013-06-06T15:49:57.570 回答