0

ユーザーがアプリにログインした後、いくつかのビューコントローラーとUITabBarControllerを作成します。これらは、アプリの残りの部分で永続化されます。そのためのコードは次のとおりです。

    .......
//construction of view controllers, standard 

NSMutableArray *topLevelControllers = [[[NSMutableArray alloc] init] autorelease];
[topLevelControllers addObject: paymentNavController];
[topLevelControllers addObject: customerNavController];
[topLevelControllers addObject: historyNavController];    

UITabBarController *tabBarController = [[[UITabBarController alloc] init] autorelease];
tabBarController.delegate = self;
[tabBarController setViewControllers:topLevelControllers animated:NO];
tabBarController.selectedIndex = 1;

次に、customerNavControllerにテーブルビューがあり、ユーザーをpaymentNavControllerに切り替えて、tabBarControllerの選択されたインデックスも切り替えたいとします。

では、含まれているビューコントローラの1つから、そのUITabBarControllerにアクセスするにはどうすればよいでしょうか。

4

3 に答える 3

4

静的メソッドを使用してタブバーをグローバルに保存することになり、後でアクセスできるようになりました。これは、「LoginViewController」というファイルで宣言されています。

static id gGlobalInstanceTabBar = nil;
+ (UITabBarController *) tabBarController
{
    if (!gGlobalInstanceTabBar)
    {
        gGlobalInstanceTabBar = [[UITabBarController alloc] init];
    }
    return gGlobalInstanceTabBar;
}

次に、ナビゲーション コントローラーを初期化した後、次のようにタブ バー コントローラーにアクセスして構成します。

UITabBarController *tabBarController = [LoginViewController tabBarController];

次に、どこからでもアクセスして、プログラムでビューを切り替えることができます。

    UITabBarController *tabBar = [LoginViewController tabBarController];
//do anything with view controllers, pass values etc here before switching views
[tabBar setSelectedIndex:1];
于 2011-05-16T16:39:00.943 に答える
2

親/祖先 UITabBarController を持つ任意のコントローラー (階層の深さに関係なく) を介してアクセスできます[self tabBarController]

プロパティを持つ UINavigationController でも同じことが機能しますnavigationController

于 2011-07-19T08:55:06.280 に答える
0

AppDelegate があると思いますよね?もしそうなら、あなたは次のようなコードを持っています:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];

return YES;

}

次に、ロジックで使用します

[self.delegate ...]

さまざまなコントローラー間で作業するため。詳細はこちら: View Controller Programming

于 2011-05-05T20:15:45.727 に答える