在推动时显示底栏

时间:2013-02-06 14:23:02

标签: iphone ios uitabbarcontroller uitabbar

我在导航到第一个视图到第二个视图时隐藏我的标签栏但是如何在从第二个视图弹出到第一个视图时将其显示回来

在第一个视图中

 -(IBAction)gotoSecondView{

   VideoDetailViewController *vdoDtlPage = [[VideoDetailViewController alloc]initWithNibName:@"VideoDetailViewController" bundle:nil];


    self.hidesBottomBarWhenPushed=YES;

    [self.navigationController pushViewController:vdoDtlPage animated:YES];
    }

从第二个视图

  -(IBAction)back:(id)sender{

   self.hidesBottomBarWhenPushed=NO;
  [self.navigationController popViewControllerAnimated:YES];

  }

2 个答案:

答案 0 :(得分:0)

一种选择是使用NSNotificationCenter

在这里查看答案IOS: Move back two views

基本上,当您解除查看该通知的视图VideoDetailViewController并且它运行方法时,您可以向父视图控制器添加通知方法

  -(IBAction)back:(id)sender{

    [self.navigationController popViewControllerAnimated:YES];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"showTabBar" object:nil];

  }

然后您的父视图控制器中的相关方法运行

- (void)showTabBar:(NSNotification *)notif
    {
        NSLog(@"Received Notification ");

        self.hidesBottomBarWhenPushed=NO;
}

答案 1 :(得分:0)

self.hidesBottom ...使navigationController隐藏底栏,而设置的VC位于堆栈上

所以不要将其隐藏在root中,而是将其隐藏为vdoDtlPage

-(IBAction)gotoSecondView{
    VideoDetailViewController *vdoDtlPage = [[VideoDetailViewController alloc]initWithNibName:@"VideoDetailViewController" bundle:nil];
    vdoDtlPage.hidesBottomBarWhenPushed=YES;
    [self.navigationController pushViewController:vdoDtlPage animated:YES];
}

然后,当你弹出第二个视图时,firstViews再次成为顶级VC,因为它有hidesBottomBar = No,导航控制器将再次在栏中设置动画