0

私は で作業しており、2 つのアイテムiOS 6.1を持っています。それぞれが にプッシュしています。TabBarControllerNavigationControllerView

子コントローラーのいずれかから新しいを追加し、特定のアクションを設定するにはUITabBarItemどうすればよいですか。TabBarController

注: ここで、この質問StackOverflowsとほぼ同じ言い回しで寄せられたいくつかの質問を修正しましたが、それらの実装は、ここで説明しているほどではありません。

これは で許可されていiOSますか? そうでない場合は、どのように行うかについての考えを共有していただけますか?

注: 数日間ぶつかった後、次のアプローチを試しました。うまくいきましたが、完全に快適ではありません。

このアプローチは、コントローラークラスの1つを持つことで構成され、

1) コントローラ クラスの 1 つに UITabBarControllerDelegate を継承させます。私の場合、AppDelegate の後に初めてインスタンス化される可能性が最も高いクラス、つまりアプリの最初のビューに属するクラスにこのデリゲートを実装しました。

interface MainTableViewController: UITableViewController <UITabBarControllerDelegate>
...

2) viewDidLoad で TabBarController のデリゲートを設定する

self.tabBarController.delegate = self;

3) プロトコル tabBarController:shouldSelectViewController: を実装します。このメソッドを使用して、どのビューを表示するかを制御できます。

私の場合、以前にダミーのビューコントローラーをいくつか追加し、各 BarItem に異なるタグ番号を付けました

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    switch (viewController.tabBarItem.tag) {
        case 3:
        {
            [self someActionA];
            return NO;
        }
        case 4:
        {
            [self someActionB];
            return NO;
        }
        default:
            return YES;
    }
}

これまでのところ、このコードは、私が最初に本当に意図したことのトリックを実行しますが、AppDelegate でこれを実行できればよかったのにと思います。

誰かが同じ問題に遭遇する可能性がある場合、または別のアプローチがある場合は、共有してください.

4

1 に答える 1