在不同视图上显示和隐藏导航栏

时间:2012-08-30 09:07:14

标签: iphone uinavigationcontroller uinavigationbar

我有带NavigationController的rootViewController。在rootView navigationBar上隐藏。当我按下下一个视图时,会显示navBar。所以当我从第二个视图返回到rootView时,navBar会隐藏。没关系。然后我想从第二个视图转到第三个视图并显示navBar。但它是隐藏的,因为在第二个视图中我有这个代码在从第二个视图转到它时在rootView中隐藏navBar:

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWilDisappear:animated];
    [self.navigationcontroller setNavigationBarHidden:YES animated:YES];
}

如何仅在rootView上显示navBar并将其隐藏在所有其他视图上?

第二个视图是UIViewController的子类,第三个视图是UIViewController的子类,也是由IB创建的UITableView。


UPD

在第一个viewController中我添加了这个:

-(void)viewDidLoad{
[self.navigationController setNavigationBarHidden:YES];
[super viewDidLoad];

}

-(void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

-(void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

第三节:

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

感谢您的帮助,伙计!!

3 个答案:

答案 0 :(得分:1)

在第三个视图的viewWillAppear中添加:

-(void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  [self.navigationcontroller setNavigationBarHidden:NO animated:YES];
}

答案 1 :(得分:1)

试试这个: -

在thirdView中写道: -

 -(void)viewDidAppear:(BOOL)animated
    {
      [self.navigationcontroller setNavigationBarHidden:NO animated:YES];

}

答案 2 :(得分:1)

如果您希望在第二个和第三个ViewControllers中显示导航栏,只需将以下内容添加到viewWillAppear或viewDidLoad方法中:

self.navigationController.navigationBarHidden = NO; 

如果您的UINavigationController具有(强)属性,我建议您应该这样做。