0

最初に1つのタブを持つタブバープロジェクトがあり、View Controllerにはボタンがあります。ボタンがタップされた場合 - 特定のビュー コントローラーがタブバー コントローラー/タブ項目に追加されることが期待されます。しかし、ボタンを押すたびに、同じビューコントローラー/タブ項目が追加されています (同じ複数のタブ項目)。ボタンがタップされた回数に関係なく、1 つの Viewcontroller に対して 1 つのタブ項目を制限しようとしています。どんな助けでも大歓迎です。

 -(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.

}

そうすれば、最初のボタンタップでのみ実行されます。

編集:

もちろん、これには、持っているすべてのボタンに対して 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 に答える