基于视图的应用程序中的标签栏项目不起作用

Posted

技术标签:

【中文标题】基于视图的应用程序中的标签栏项目不起作用【英文标题】:Tabbar item in view based application not working 【发布时间】:2012-02-04 12:42:21 【问题描述】:

我在基于视图的应用程序中通过 nib 创建了一个标签栏,其中包含三个项目。 我希望在视图出现时默认选择第一项。

问题是 item1 显示已选择,但它没有加载它有权执行的视图。当我们单击该项目时,会出现视图。请帮我解决这个问题。这是我的代码...

-(void)viewWillAppear:(BOOL)animated
    [super viewWillAppear:animated];
    tabBar.delegate = self;
    [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];


- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
    NSLog(@"didSelectItem: %d", item.tag);
    if (item.tag==1) 
        ImagesOverlay=[[UIView alloc]initWithFrame:CGRectMake(0, 210, 320, 250)];
        ImagesOverlay.backgroundColor=[UIColor grayColor];
        [self.view addSubview:ImagesOverlay];
    else if (item.tag==2) 
        relatedOverlay=[[UIView alloc]initWithFrame:CGRectMake(0, 210, 320, 250)];
        relatedOverlay.backgroundColor=[UIColor redColor];  
        [self.view addSubview:relatedOverlay];
    else if(item.tag==3)
        //other condition
    

【问题讨论】:

【参考方案1】:

刚刚搞定..

   -(void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
tabBar.delegate = self;
[tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
[self activateTab:1];
 

- (void)activateTab:(int)index 
switch (index) 
    case 1:
    //condition
    break;
    case 2:
   //condition
    break;
    default:
        break;

 

  - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
NSLog(@"didSelectItem: %d", item.tag);
[self activateTab:item.tag];    
  

【讨论】:

【参考方案2】:

您似乎需要对UITabBarController 的工作原理进行更多研究。您应该将UIViewController 的实例传递给它,而不是手动更改视图。阅读课程参考:

https://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html

【讨论】:

他似乎使用的是UITabBar,而不是UITabBarController

以上是关于基于视图的应用程序中的标签栏项目不起作用的主要内容,如果未能解决你的问题,请参考以下文章

导航不起作用

IOS Segue 在自定义标签栏中不起作用

iOS 8:在界面构建器中设置的自定义标签栏项目的选定图像不起作用

设置每个视图的标题不起作用

将快餐栏中的 ImageView 宽度与 Android 中的自定义视图匹配父项不起作用

如何在“更多”视图中切换到标签栏项目?