4

通常、 a をロードしてUITabBarControllerビューを切り替えると、viewWillAppear各ビューコントローラーの が呼び出されます。しかし、そうではありません。

別のタブがタッチされたらすぐに別のタブに切り替えたい。

ロードするタブを指定すると、たとえば[self.tabBarController setSelectedIndex:0]viewWillAppearタブの 1 つ (タブ 4 など) で... すぐにタブ 0 に戻ります。

しかし、その後....viewWillAppearタブを切り替えても、どのタブでも呼び出されません。たとえば、もう一度タブ 4 に移動すると、タブ 0 に戻りません。タブ 4 がタッチされるとすぐにタブ 0 がロードされると予想されるため、終わりのないサイクルで戻ることを期待しています。

しかし、それは一度だけ実行されます!!

どうして ??


注:質問は編集されました。

4

2 に答える 2

2

私は解決策を見つけたと思います。タブをクリックするたびに機能し、両方のタブで viewWillAppear を呼び出します。

あなたのAppDelegate(またはUITabBarControllerのデリゲートのどこかで)これを行うことができます:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

サンプルコード:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if([self.tabBarController.viewControllers indexOfObject:viewController] == 1) {
        [self.tabBarController setSelectedIndex:0];
    }
}
于 2011-07-26T19:33:51.183 に答える
0

selectedIndex を設定しても、selectedViewController は変更されません。selectedViewController 自体を変更する必要があります。詳細については、ドキュメントを参照してください。

于 2011-07-26T18:51:43.590 に答える