iOS:在TabBar应用程序中隐藏SplitView的rootViewController

时间:2011-08-03 08:01:59

标签: ios uitabbarcontroller uisplitviewcontroller

我在第一个标签中有一个带分割控制器的TabBar iPad应用程序。我按照这个说明去做:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/62217-simplest-way-make-split-controller-tab-bar-controller.html

现在我的目标是隐藏分割控制器的根视图控制器。我找到了一种方法来实现这个目标:

http://vimeo.com/13054813

但这对我不起作用,因为它只能在假设分割控制器在MainWindow.xib中时起作用。但是使用前面的方法,可以以编程方式添加拆分控制器。

有人可以帮助我实现目标吗?任何想法都将不胜感激。

提前致谢!


以下是代码:

http://dl.dropbox.com/u/27695108/MariCruz.zip

我希望你能帮助我。

谢谢!

1 个答案:

答案 0 :(得分:1)

您的项目存在一些问题。

1首先,您使用的是UITabBarController,这就是您发现隐藏根视图控制器的代码不起作用的原因。

  1. 第二个是你的makeSplitViewController实现,你正在初始化splitViewControllerrootViewControllerdetailViewController两次。
  2. 因此,您必须修复第2点,以便您可以正确管理所有这些控制器,然后您应该修改toggleSplitView,以便考虑到您正在使用UITabBarController这一事实。例如,将该方法的前几行替换为以下几行:

    - (void)toggleSplitView {
    
        NSArray *controllers = _tabBarController.viewControllers;
        UIViewController* controller = [controllers objectAtIndex:1];
    
        if (controller.view == splitViewController.view) {
    
            [splitViewController.view removeFromSuperview];
    
            splitViewController.viewControllers = [NSArray arrayWithObjects:rootViewController, rootViewController, nil];
    
            splitViewController.view = detailViewController.view;
    
    } else {
           ....
    

    正如你所说,我没有访问_window来检查UISplit是否存在,因为该视图不在_window下,而是在标签栏中。 if的另一个分支也需要根据相同的标准重写,但我会留给你。

    以上代码仅适用于您的第二个标签(与索引1对应的标签);实际上,由于您在splitViewController中覆盖makeSplitViewController,我只能在标签栏中使用索引1处的元素,而无需进行进一步更改。