基于视图的应用程序中的标签栏项目不起作用
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 8:在界面构建器中设置的自定义标签栏项目的选定图像不起作用