0

我在我的一个视图中使用库中的 UITabBar 控件(请注意,我使用的不是 UITabBarController 而是 UITabBar 控件)。

现在,我将两个 tabBar 项添加到此 tabBar。

我为此视图(.m 和 .h)文件创建了控制器类,并在 .h 文件中使用了委托。

在 .m 文件中,我使用了以下函数:

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

我已将 tag = 0 和 tag = 1 分配给各自的 tabBar 项目。

我想要做的是,在单击第一个 tabBar 项目时,我想显示一个视图,然后单击另一个 tabBar 项目,我想显示另一个视图。

因此,在上面的函数中,我正在检查如果单击的 tabBar 项目的标记为 0,那么我将显示一个视图,否则我将显示另一个视图。

我正在显示如下视图:

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];

现在的问题是,当我单击任何 tabBar 项目时,它会加载正确的视图,但 tabBar 本身将消失,因为我正在将视图添加到窗口本身。

请帮助我,以便我可以加载正确的视图,并且我的 tabBar 本身也是可见的。

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 像素(无论你需要删除标签栏)。

于 2009-10-03T06:27:44.690 回答