0

タブが動的に追加された TabBar Controller があります。タブの追加は簡単です。[self viewControllers]配列を取得し、新しいビュー コントローラーを追加し、それを使用[self setViewControllers]して TabBar を更新するだけです。ここで、追加されたビュー コントローラーの 1 つでボタンを押して、TabBar から削除できるようにしたいと考えています。

削除する一致を見つけるためselfに、追加されたView Controllerと配列を比較するにはどうすればよいですか?[[self tabBarController] viewControllers]

重複する可能性があるため、タブのタイトルを使用できません。項目と比較selfしてみましたが、実は[self parentViewController]配列に入っています。parentViewController「その他」メニューでビューを開いたときparentViewControllerは、「その他」ビューコントローラーなので使用できません。tagビューの直接の親にあるなどの情報にアクセスする方法がわかりません。

どんなヒントでも素晴らしいでしょう、そして前もって感謝します!

例として、これが私の現在のコードです。機能しますが、タブが「その他」メニューにある場合は機能しません。これは、TabBar の View Controller のボタンが押されたときに実行されます。

NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:[[self tabBarController] viewControllers]];
for (int i = 0; i < [temp count]; i++)
{
    UIViewController *test = [temp objectAtIndex:i];
    if (test == [self parentViewController])
    {
        [temp removeObject:test];
        break;
    }
}
[[self tabBarController] setViewControllers:temp];
4

1 に答える 1

0

ああ、今、私は少しばかげていると感じています。以前にこれを試したことがあると確信していましたが、他の回答ではこれを行わないように促されましたが...

[[self tabBarController] selectedIndex]現在選択されているタブの配列内の位置を取得し、その位置にあるオブジェクトを削除するために使用できます。それは私が探していたものです - 追加のコードをあまり必要とせずに、迅速かつ効率的です。

期待どおりに動作します。ユーザーが項目を並べ替えると、配列も並べ替えられます。したがって、初期インデックスが変更されている間、ユーザーが [閉じる] ボタンを押したときのインデックスは、配列内のコントローラーのインデックスです。

うーん、やっと取れた…

于 2012-10-23T17:03:18.180 に答える