在应用程序的第二个视图中插入标签栏,标签栏包含5个以上的标签

时间:2013-07-31 12:08:09

标签: iphone objective-c uitabbarcontroller

其他可添加6个标签的解决方案

对于超过5个标签我使用过CiExpandableTabBarController 问题是: 如果我添加CiExpandableTabBarController像这样: self.window.rootViewController = CiExpandableTabBarController; 那就没问题..

但我需要在第二个视图和视图之后添加它。 我的第一个视图是登录,所以首先,视图标签栏应该是可见的

现在我得到这样的输出:

未显示选定的tebbar项目图像

enter image description here

enter image description here

但我希望输出像这样:

enter image description here

我添加了这样的标签栏:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

[self makeTabBar];

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
//==============


self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.



if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
    }
    else
    {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_3" bundle:nil];
    }

} else {
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}

UINavigationController *nvc=[[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController=nvc;
[nvc setNavigationBarHidden:YES];
//    self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];


return YES;
}

-(void)makeTabBar
{
//    self.tabBarController=[[UITabBarController alloc] init];
//    self.tabBarController.customizableViewControllers = nil;


ProductSearchViewController *homeObj;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
        homeObj=[[ProductSearchViewController alloc] initWithNibName:@"ProductSearchViewController" bundle:nil];
    }
    else
    {
        homeObj=[[ProductSearchViewController alloc] initWithNibName:@"ProductSearchViewController_3" bundle:nil];
    }
}
else
{
    homeObj=[[ProductSearchViewController alloc] initWithNibName:@"ProductSearchViewController~ipad" bundle:nil];
}
UINavigationController *tab1Controller = [[UINavigationController alloc] initWithRootViewController:homeObj];
tab1Controller.title=@"Product Seach";
tab1Controller.tabBarItem.image=[UIImage imageNamed:@"productsearch.png"];

WhereToBuyViewController *chatListObj;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
            chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController" bundle:nil];
    }
    else
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController_3" bundle:nil];
    }
}
else
{
    chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController~ipad" bundle:nil];
}
UINavigationController *tab2Controller = [[UINavigationController alloc] initWithRootViewController:chatListObj];
tab2Controller.title=@"Where To Buy";
tab2Controller.tabBarItem.image=[UIImage imageNamed:@"wheretobuy.png"];

//===========tab3
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController" bundle:nil];
    }
    else
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController_3" bundle:nil];
    }
}
else
{
    chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController~ipad" bundle:nil];
}
UINavigationController *tab3Controller = [[UINavigationController alloc] initWithRootViewController:chatListObj];
tab3Controller.title=@"Where To Buy";
tab3Controller.tabBarItem.image=[UIImage imageNamed:@"wheretobuy.png"];
//====================tab4
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController" bundle:nil];
    }
    else
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController_3" bundle:nil];
    }
}
else
{
    chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController~ipad" bundle:nil];
}
UINavigationController *tab4Controller = [[UINavigationController alloc] initWithRootViewController:chatListObj];
tab4Controller.title=@"Where To Buy";
tab4Controller.tabBarItem.image=[UIImage imageNamed:@"wheretobuy.png"];
//==============tabtab5

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController" bundle:nil];
    }
    else
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController_3" bundle:nil];
    }
}
else
{
    chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController~ipad" bundle:nil];
}
UINavigationController *tab5Controller = [[UINavigationController alloc] initWithRootViewController:chatListObj];
tab5Controller.title=@"Where To Buy";
tab5Controller.tabBarItem.image=[UIImage imageNamed:@"wheretobuy.png"];
//=========================tab 6

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    if([UIScreen mainScreen].bounds.size.height == 568)
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController" bundle:nil];
    }
    else
    {
        chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController_3" bundle:nil];
    }
}
else
{
    chatListObj=[[WhereToBuyViewController alloc] initWithNibName:@"WhereToBuyViewController~ipad" bundle:nil];
}
UINavigationController *tab6Controller = [[UINavigationController alloc] initWithRootViewController:chatListObj];
tab6Controller.title=@"Where To Buy";
tab2Controller.tabBarItem.image=[UIImage imageNamed:@"wheretobuy.png"];
//=======================
CiExpandableTabBarController *tabbar=[[CiExpandableTabBarController alloc] initWithViewControllers:[NSArray arrayWithObjects:tab1Controller,tab2Controller,tab3Controller,tab4Controller,tab5Controller,tab6Controller, nil] andSelectedIndex:0];
[self.window addSubview:tabbar.view];
}

1 个答案:

答案 0 :(得分:0)

对于UITabBarItem的所选图像和未选择图像,它有两个属性,即finishedSelectedImagefinishedUnselectedImage。但是你根本无法设置这些属性,因为它们没有为它们定义任何setter方法,只有getter。

相反,你可以做这样的事情。假设'tab_1_unselImg'是未选中的标签图像,'tab_1_selImg'用于标签栏控制器第一个标签的选定标签。

[[[[self.tabBarController viewControllers] objectAtIndex:0] tabBarItem] 
setFinishedSelectedImage:tab_1_selImg withFinishedUnselectedImage:tab_1_unselImg];