Tabs UISplitView,在局部视图底部具有工具栏/选项卡

Tabs UISplitView,在局部视图底部具有工具栏/选项卡,tabs,tabbar,ipad,Tabs,Tabbar,Ipad,这就来了。我从iPad的标准开箱即用splitview应用程序开始。左侧为根视图,右侧为局部视图。局部视图的工具栏位于顶部 我想添加的是一个选项卡栏到详细视图的底部,并在工具栏选项卡栏之间的详细视图中加载选项卡 问题是,我是否要在它们之间添加另一个视图以将选项卡加载到其中,如果是,我如何调整其大小并考虑工具栏和选项卡栏的高度 明白了吗 希望有人能给我指出正确的方向。示例将非常好,web上的每个示例似乎都是开箱即用的hello world样式。是的,答案非常简单。像SplitViewControl

这就来了。我从iPad的标准开箱即用splitview应用程序开始。左侧为根视图,右侧为局部视图。局部视图的工具栏位于顶部

我想添加的是一个选项卡栏到详细视图的底部,并在工具栏选项卡栏之间的详细视图中加载选项卡

问题是,我是否要在它们之间添加另一个视图以将选项卡加载到其中,如果是,我如何调整其大小并考虑工具栏和选项卡栏的高度

明白了吗


希望有人能给我指出正确的方向。示例将非常好,web上的每个示例似乎都是开箱即用的hello world样式。

是的,答案非常简单。像SplitViewControllers这样的UITabbarController是Apple设计的,它只作为根视图控制器,因此您不能在另一个视图中嵌套TabBarController,但是您可以在视图中嵌套UITabBar

我在底部的细节视图中添加了选项卡栏,在顶部添加了导航栏,然后在它们之间添加了占位符视图。全部在界面生成器中!,您将希望通过占位符视图上的自动调整大小来打开所有内容

接下来,实现uitabardelegate。为此,您需要:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
因此,您可以使用item.tag,如果您在Interface Builder中为每个项目指定一个唯一的标记,则会让您知道用户单击了哪个选项卡。我为我的设置了定义的值:

#define VIEW_TAB_A 0
#define VIEW_TAB_B 1
#define VIEW_TAB_C 2
然后你就会想。。。好吧,我最好让你看看

    - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    [self switchToView:item];
}

- (void) switchToView : (UITabBarItem*) item {

    if( currentViewController != nil ) {
        [currentViewController viewWillDisappear:NO];
        [currentViewController.view removeFromSuperview];               
    }

    switch(item.tag) {
        case VIEW_TAB_A:
            currentViewController = self.viewA;
            break;
        case SCAN_VIEW_TAB_B:
            currentViewController = self.viewB;
            break;
        case PROMOTIONS_VIEW_TAB_C:
            currentViewController = self.viewC;
            break;
    }

    UIView *aView = currentViewController.view; 

    aView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    aView.frame = placeholderView.frame;

    [currentViewController viewWillAppear:NO];

    [self.view insertSubview:aView aboveSubview:placeholderView];
    if( currentViewController != nil ) {
        [currentViewController viewDidDisappear:NO];
    }
    [currentViewController viewDidAppear:NO];
}
记住,首先在ViewDiLoad中分配视图(viewA、viewB、viewC),然后在dealloc中释放。还要注意自动重设屏幕

希望这能帮助别人