1

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

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

如何仅在 rootView 上显示导航栏并在所有其他视图上隐藏它?

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


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

谢谢你们的帮助,伙计们!!

4

3 回答 3

1

尝试这个:-

在第三视图中写: -

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

}
于 2012-08-30T09:24:06.947 回答
1

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

self.navigationController.navigationBarHidden = NO; 

当你的 UINavigationController 有一个(强)属性时就是这种情况,我建议你应该拥有它。

于 2012-08-30T09:27:22.527 回答
1

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

-(void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  [self.navigationcontroller setNavigationBarHidden:NO animated:YES];
}
于 2012-08-30T09:20:02.177 回答