故事板 - UITabBarController

19

今天我在玩iOS 5和storyboards。目前的情况是主storyboard以uitabbarcontroller开始,然后是navigationviewcontroler,最后是uiviewcontroller。一切都很顺利。

我想知道如何在应用程序启动时动态设置uitabbarcontroller显示的哪个viewconotroller。因此,我想使用CoreData查看表是否为空,如果为空,则选择第二个视图控制器(选项卡项2),如果不为空,则选择第一个视图控制器(选项卡项1)。

由于故事板正在处理所显示的内容,因此我不确定如何在app delegate中设置这个?

希望有人能指点我正确的方向!

谢谢!


好问题,伙计。这是一张投票,你也可以投票。 - Farini
2个回答

27

您的应用委托将具有一个窗口属性。可以使用它来获取指向故事板初始视图控制器的指针(它将是您的UITabBarController),例如我一个应用程序委托中的此示例:application:didFinishLaunchingWithOptions:

UITabBarController *tabController =
   (UITabBarController *)self.window.rootViewController;
tabController.selectedIndex =
   [defaults integerForKey:kOptionLastTabSelectedKey];
tabController.delegate = self;

谢谢你提供的代码,我已经使用了。但是如何获取Storyboard中的其他视图控制器呢?有什么方法可以做到吗? - roocell
有一个 UIStoryboard 的 -instantiateViewControllerWithIdentifier: 方法(假设您已经为要访问的视图控制器设置了标识符字符串),尽管这将创建一个新的视图控制器实例。当然,从应用程序中的故事板segue创建的那些视图控制器在源视图控制器的prepareForSegue:方法中是可用的。 - abelsey
1
你可以通过以下方式获取选定的 ViewController:(UINavigationController *)[tabController selectedViewController]。所有其他的 ViewControllers 都存储在 viewControllers 属性中。这是由 TabBarController 管理的 ViewController 数组。 - rockstarberlin

0

对于我来说,我可以使用self.navigationController.parentViewController访问tabbar; 这总是返回tabbar控制器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接