0

ビューの 1 つでライブラリから UITabBar コントロールを使用しています (UITabBarController ではなく UITabBar コントロールを使用していることに注意してください)。

ここで、この tabBar に 2 つの tabBar 項目を追加しています。

このビュー (.m および .h) ファイルのコントローラー クラスを作成し、.h ファイルでデリゲートを使用しました。

.m ファイルでは、次の関数を使用しました。

  • (void)tabBar:(UITabBar *)TabBarControl didSelectItem:(UITabBarItem *)FirstView

tag = 0 と tag = 1 をそれぞれの tabBar アイテムに割り当てました。

私がやりたいことは、最初のタブバー項目をクリックしてビューを表示し、別のタブバー項目をクリックすると、別のビューを表示したいということです。

したがって、上記の関数では、クリックされた tabBar 項目のタグが 0 の場合、1 つのビューを表示するよりも、別のビューを表示することを確認しています。

次のようにビューを表示しています。

Team1Scoreboard *tempTeam1Scoreboard = [Team1Scoreboard alloc]; tempTeam1Scoreboard = [tempTeam1Scoreboard initWithNibName:@"UserTeamScoreboard" bundle:[NSBundle mainBundle]];

    self.cntrlTeam1Scoreboard = tempTeam1Scoreboard;

    [tempTeam1Scoreboard release];

    UIView *theWindow = [self.view superview];
    [self.view removeFromSuperview];
    [theWindow addSubview:self.cntrlTeam1Scoreboard.view];

問題は、タブバー項目のいずれかをクリックすると、正しいビューが読み込まれますが、ウィンドウ自体にビューを追加しているため、タブバー自体が消えてしまうことです。

正しいビューをロードできるように助けてください。また、タブバー自体も表示されます。

4

1 に答える 1

1

TabBar は、新しい子を追加するビューの子であり、新しい子のサイズが親と同じであるため、消えています。それは理にかなっていますか?わかりました、このように見てください:

ViewA があり、ViewA にはいくつかのラベルと TabBar があります。ViewA は ViewControllerA によって管理されます。ViewControllerA では、ViewB のインスタンスを作成して を呼び出していますViewControllerA.view addSubView:instanceOfViewBよね?その前に、ViewB のサイズを変更する必要があります。

次のようなことを試してください:

ViewControllerB *viewControllerB = [[ViewControllerB alloc]initWithNibName:@"ViewB" bundle:nil];
CGRect frame = CGRectMake(self.view.frame.origin.x, 
                          self.view.frame.origin.y,
                          self.view.frame.size.width, 
                          self.view.frame.size.height - 40);
viewControllerB.view.frame = frame;
[self.view addSubview:viewB.viewControllerB];

基本的には、あなたがしていることに近いはずですが、サイズを 40 px 小さく設定しています (タブ バーを削除するために必要なものは何でも)。

于 2009-10-03T06:27:44.690 に答える