iPad在详细视图中添加tabBar

时间:2012-07-31 14:17:17

标签: ipad tabbar

我想显示3个不同的屏幕,具体取决于用户选择的选项

screen where i have 3 options

他们是1.类型处方2.Scribble处方3.处方表

如何切换那些3的视图?

由于

1 个答案:

答案 0 :(得分:1)

像SplitViewControllers这样的UITabBarControllers只是Root View Controller,因此你不能在另一个视图中嵌套TabBarController,但是你可以在视图中嵌套UITabBar。

我将Tabbar添加到底部的详细信息视图,顶部的导航栏,然后是它们之间的占位符视图。全部在Interface Builder!中,您将需要在占位符视图上使用自动调整大小打开所有内容。

接下来,实现UITabBarDelegate,您将需要:

- (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];

} 这些是我从类似问题中学到的笔记,下次更难以搜索