0

タブバーアプリケーションがあります。起動コードはこちら

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // Override point for customization after application launch.
    [self.window makeKeyAndVisible];



    self.tabBarController=[[UITabBarController alloc] init];


    StartViewController *startViewController=[[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil];
    NavRootViewController *navRootViewController=[[NavRootViewController alloc] initWithNavControllerWithSubViewController:startViewController];

    HelpViewController *helpViewController=[[HelpViewController alloc] initWithNibName:@"HelpViewController" bundle:nil];

    SettingsViewController *settingsViewController=[[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];

    AboutUsViewController *aboutUsViewController=[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil];

    [self.tabBarController setViewControllers:[NSArray arrayWithObjects: navRootViewController, helpViewController, settingsViewController, aboutUsViewController, nil]];



    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController=self.tabBarController;

4 つのタブ バー タブで起動されたアプリケーション。このアクションは、ユーザーが最初のタブのナビゲーション コントローラーのルート ビュー コントローラーでスタート ボタンを押した後に呼び出されます。

-(IBAction)startPressed:(id)sender
{
    NSLog(@"startPressed: called");


    RootViewController *vController=[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    [self.navigationController pushViewController:vController animated:YES];

}

RootViewController これは正常に機能しますが、プロパティhidesBottomBarWhenPushedが機能しないためにタブバーを非表示にする必要があります。助けてください、どうすればできますか?

4

5 に答える 5

6

これがお役に立てば幸いです。

- (void)viewWillAppear: (BOOL)animated 
{ 
    self.hidesBottomBarWhenPushed = YES; 
}
于 2012-06-27T05:36:27.893 に答える
1

はい、タブバーのビューコントローラーではなく、ウィンドウにモーダルビューを追加する必要があります。次のようなものを試してください.. AppDelegate のオブジェクトを次のように作成します。 AppDelegate *appDelegate=[[UIApplication sharedApplication]delegate]; 次に、次の行に追加します

[appDelegate.window.rootviewcontroller.view presentModalViewController:vController animated:YES];

[self presentModalViewController:vController animated:YES]または、tabBar の firstviewcontroller の viewDidAppear にコードを追加します。

問題を解決するために何をしましたか??それも知りたいです。

于 2012-06-27T05:14:33.090 に答える
1

このコードを使用して解決しました:

-(IBAction)startPressed:(id)sender
{
    NSLog(@"startPressed: called");

    RootViewController *vController=[[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    UINavigationController *navController=[[UINavigationController alloc] initWithRootViewController:vController];
    [vController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
    [((AppDelegate *)[UIApplication sharedApplication].delegate).tabBarController presentModalViewController:navController animated:YES];
}

@iPhone開発者に感謝

于 2012-07-18T13:28:57.510 に答える
1
UIViewController *nextViewController = [[UIViewController alloc] initWithNibName:@"NextViewController" bundle:[NSBundle mainBundle]];

// hide UITabbarController
nextViewController.hidesBottomBarWhenPushed = YES;

[self.navigationController pushViewController:nextViewController animated:YES];
[nextViewController release];
于 2016-09-07T02:32:58.433 に答える
1

メイン ビューにタブ バーを表示したくない場合は、タブ バーをナビゲーション コントローラーにプッシュしないでください。これを行うと、アプリケーションは、この新しいコントローラーがナビゲーション階層の一部であると想定します。おそらく最善の解決策は、アプリケーションを RootViewController で開始し、ナビゲーション コントローラーをモーダルに表示することです。ナビゲーション コントローラーの操作が完了したら、dismissModalViewControllerそれ自体を呼び出します。

于 2012-06-26T13:24:32.597 に答える