0

我有一个标签栏项目,开头有一个标签,视图控制器有按钮。如果点击了一个按钮 - 一个特定的视图控制器应该被添加到 tabbarcontroller/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];

 }
4

1 回答 1

0

您可以像这样在头文件中声明 Tableview:

UITableViewController *TableView;

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

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

}

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

编辑:

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

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];

}

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

于 2013-06-06T20:13:04.400 回答