2009-10-03 46 views
0

我在一个视图中使用库中的UITabBar控件(请注意,我没有使用UITabBarController而是UITabBar控件)。iPhone的Tabbar +查看问题

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

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

在我已经使用下面的函数.m文件:

  • (无效)的TabBar:(UITabBar *)TabBarControl didSelectItem:(UITabBarItem *)的firstView

我已分配的标记= 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

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

+0

嗨Marcc, 谢谢,我能够正确实现功能。 但现在的问题是,每个tabBar项目的标题都显示在最底部,并且不可见。 – pratik 2009-10-03 08:18:58

+0

我不知道我明白。有什么方法可以发布它现在正在做什么的截图? – marcc 2009-10-03 17:09:22