2011-04-08 130 views
1

嗨 在我的应用程序中我使用TabBar.At第一次当我打电话loginControl,我隐藏标签栏使用[login hidesBottomBarWhenPushed=YES];现在如果登录是成功的,然后我显示detailViewController,但我没有看到TabBar后,甚至将hidesBottomBarWhenPushed设置为NO
有什么问题...任何人可以帮助我?底部tabBar隐藏

+0

给我们一些代码,它可能是你在tabBarController顶部推动你的detailView。 – 2011-04-08 07:19:29

回答

0

如果你不再需要你的登录视图控制器,你可以在推秒之前弹出它。这将完成这项工作,但在后退按钮中会出现奇怪的动画。它仍然是一个解决方案:)

[navController popViewControllerAnimated:NO]; 

编辑:

试试这个....

loginSuccessController *login = [[loginSuccessController alloc] initWithNibName:@"loginSuccessController" bundle:nil]; 
[self.navigationController popViewControllerAnimated:NO]; 
[self.navigationController pushViewController:login animated:YES]; 
+0

这是我的代码当控制器显示登录页面... – Hiren 2011-04-08 08:48:50

+0

我已编辑我的帖子。 – Jorge 2011-04-08 09:13:55

+0

嗨乔治,这是不可能的,因为popViewControlerAnimated调用第一..所以没有影响pushViewController ... – Hiren 2011-04-09 04:59:55

0

可以尝试[self setHidesBottomBarWhenPushed:NO];在loginsuccesscontroller的viewWillAppear中或viewDidLoad中

+0

是的,我尝试但没有影响 – Hiren 2011-04-09 05:00:27

2

使用此方法隐藏并显示tabbar :)

-(void)makeTabBarHidden:(BOOL)hide 
{ 

    UITabBarController *tabBarController = self.tabBarController; 

    if (hide == tabBarController.tabBar.hidden) { 
     return; 
    } 


    UIView *contentView; 

    if ([[tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]]) { 
     contentView = [tabBarController.view.subviews objectAtIndex:1]; 
    } else { 
     contentView = [tabBarController.view.subviews objectAtIndex:0]; 
    } 

    if (hide) { 
     contentView.frame = tabBarController.view.bounds; 
    } 
    else { 
     contentView.frame = CGRectMake(tabBarController.view.bounds.origin.x, 
             tabBarController.view.bounds.origin.y, 
             tabBarController.view.bounds.size.width, 
             tabBarController.view.bounds.size.height - tabBarController.tabBar.frame.size.height); 
    } 

    tabBarController.tabBar.hidden = hide; 
}