如何在运行时添加之前检查TabBar项是否已存在?

时间:2013-06-06 19:46:55

标签: ios uitabbarcontroller uitabbar uitabbaritem

我有一个标签栏项目,开头有一个标签,视图控制器有按钮。如果点击一个按钮 - 预计特定的视图控制器将添加到tabbarcontroller / tab项目。但每次按下按钮时,都会添加相同的viewcontroller / tab项目(相同的多个标签项)。我试图限制一个ViewController的一个标签项,无论点击按钮多少次。任何帮助,将不胜感激。

 -(IBAction) buttontap:id(sender){
UITableViewController*TableView = [mainStoryBoard instantiateViewControllerWithIdentifier:@"Table A"];
       TableView.title = @"Table A";

 NSMutableArray *TabBarItems = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers];


if ([self.tabBarController.tabBarItem.title.description isEqualToString:@"Table A"])
    {
  [TabBarItems addObject:nil];

  }
 else
  {
  [TabBarItems addObject:TableView];
    TableView.tabBarItem.image = [UIImage imageNamed:@"contents.png"];

 }
    [self.tabBarController setViewControllers:TabBarItems];

 }

1 个答案:

答案 0 :(得分:0)

您可以在头文件中声明Tableview,如下所示:

UITableViewController *TableView;

现在您可以检查Viewcontroller是否已存在:

if(!TableView){
    //your code here
    //instantiate TableView ad add it to the TabBar.

}

这样,它只会在第一个buttonTap上执行。

编辑:

当然这个wold要求你为你拥有的每个按钮声明一个ViewController。 更动态的方法是使用您创建的可变阵列,并使用-(BOOL)isEqual:将每个项目与新创建的viewController进行比较:

UITableViewController*TableView = [mainStoryBoard instantiateViewControllerWithIdentifier:@"Table A"];
NSMutableArray *TabBarItems = [NSMutableArray arrayWithArray:self.tabBarController.viewControllers];
BOOL found = NO;
for (UIViewController *vc in TabBarItems){
    if([vc isEqual:TableView]){
         found=YES;
    }
}
if(!found){
    [TabBarItems addObject:TableView];
     TableView.tabBarItem.image = [UIImage imageNamed:@"contents.png"];
    [self.tabBarController setViewControllers:TabBarItems];

}

现在,您可以添加更多按钮,而无需在标题中添加更多变量。 玩得开心。