iPhone - tabbar +查看问题

时间:2009-10-03 05:05:53

标签: iphone view tabbar

我在我的一个视图中使用来自库的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本身也可见。

1 个答案:

答案 0 :(得分: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(无论你需要移除标签栏)。