我在我的一个视图中使用来自库的UITabBar控件(请注意,我没有使用UITabBarController而是使用UITabBar控件)。
现在,我在这个tabBar中添加了两个tabBar项目。
我为此视图(.m和.h)文件创建了控制器类,并在.h文件中使用了委托。
在.m文件中,我使用了以下函数:
我已将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本身也可见。
答案 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(无论你需要移除标签栏)。