1

UITabBar と NavigationController を備えたアプリがあります。pushViewController を使用すると、新しい ViewController が NavigationController と戻るボタンと共に表示されますが、UITabBarController は消えます。ここには同じことについて多くの質問があることは知っていますが、答えを理解していないためか、どれも私の質問を解決しました。

なにか提案を?

    ActivityViewController *activityController = [[ActivityViewController alloc] initWithNibName:@"ActivityViewController" bundle:nil];
    [self.navigationController pushViewController:activityController animated:NO];
4

1 に答える 1

4

これはおそらく、rootViewController (メインの UIWindow 用) が TabBar ではなく Navigationcontroller に設定されているためです。タブバーをなくしたくない場合は、ルート ビュー コントローラーとして設定するだけです。

AppDelegate の appDidFinishLaunching で次の操作を行います

LoginViewController *loginViewController = [[FirstViewController alloc] init];
UINavigationController *loginNavigationController = [[UINavigationController alloc] loginViewController];
[firstViewController release];

self.window.rootViewController = loginNavigationController;

次に、ログインページで:

- (void)loginSuccessfull
{
    FirstViewController *firstViewController = [[FirstViewController alloc] init];
    UINavigationController *firstNavigationController = [[UINavigationController alloc] initWithViewController:firstViewController];
    [firstViewController release];

    SecondViewController *secondViewController = [[SecondViewController alloc] init];
    UINavigationController *secondNavigationController = [[UINavigationController alloc] initWithViewController:secondViewController];
    [secondViewController release];


    UITabBarController *tabBarController = [[UITabBarController alloc] init];
    [tabBarController setViewControllers:
[NSArray arrayWithObjects:firstNavigationController, secondNavigationController, nil]];

    [firstNavigationController release];
    [secondNavigationController release];

    [self.navigationController pushViewController:tabBarController];
    [tabBarController release];

}

それでもナビゲーション機能が必要な場合は、viewControllers を UINavigationController 内にラップし、UIViewcontroller の代わりに周囲のナビゲーション コントローラを tabBar に追加します。

于 2012-04-16T16:06:59.703 に答える