views:

781

answers:

1

Hello,

I am using a UITabBar control from library in one of my view (note that I am not using UITabBarController but the UITabBar control).

Now, I am adding two tabBar items to this tabBar.

I have created controller class for this view (.m and .h) files and used delegates in the .h file.

In the .m file I have used the following function:

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

I have assigned tag = 0 and tag = 1 to respective tabBar items.

What I want to do is that, on click of first tabBar item I want to show a view and click of another tabBar item, I want to show another view.

So, in the above function I am checking that if the tag of clicked tabBar item is 0 than I will show one view else I will show another view.

I am showing the view as following:

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

Now the problem is that, when I click on any of the tabBar item, it will load the correct view but the tabBar itself will be disappeared as I am adding the view to window itself.

Please help me so that I can load correct view and also my tabBar itself is visible.

+1  A: 

The TabBar is disappearing because it's a child of the view which you are then adding a new child to and the new child is sized the same as the parent. Did that make sense? Ok, look at it this way:

You have ViewA and ViewA has a couple of labels and a TabBar. ViewA is managed by ViewControllerA. In ViewControllerA you are creating an instance of ViewB and calling ViewControllerA.view addSubView:instanceOfViewB, right? Before doing that, you will want to resize ViewB.

Try something like this:

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

Basically it should be close to what you are doing, but I'm setting the size to be 40 px less (whatever you need to remove the tab bar).

marcc
Hi Marcc,Thanks, I was able to achieve the functionality properly.But now the problem is that, the titles of each tabBar item are displayed at very bottom, and not visible properly.
pratik
I'm not sure I understand. Is there any way you can post a screenshot of what it's doing now?
marcc