导航栏隐藏无法正常工作 IOS

6

你好,我是一名新手iOS开发者。我有一个主屏幕,导航栏被隐藏了。从那里,我使用返回segue导航到另一个视图。但是当我点击返回时,在主屏幕上显示导航栏。这就是我的问题描述。

在主屏幕的onviewload中我正在做:

self.navigationController.navigationBarHidden = YES;

当用户使用后退转场到新控制器的另一个视图时,我正在执行以下操作:

self.navigationController.navigationBarHidden = NO;

现在,如果我点击返回按钮,它会在主窗口上显示导航栏,但我不想要这个。基本上,我想要没有导航栏的主屏幕和带有导航栏的下一个窗口。

如何实现这个功能?需要帮助。谢谢。

6个回答

21

将该代码放入viewWillAppear而不是viewDidLoad中,这样应该可以正常工作。


原因是在 viewDidLoad 方法中,navigationController 还未被分配。 - Sulthan
@Sulthan,不是这样的。如果你在viewDidLoad中记录self.navigationController,你会发现它已经存在了。只是导航栏的隐藏状态是在导航控制器级别上设置的,因此如果你在一个控制器中将其设置为No,它将保持这种状态,直到你在所有其他控制器中更改它。将代码放在每个控制器的viewWillAppear方法中可以确保在该控制器出现时重置它。 - rdelmar
2
你好rdelmar,这段代码在viewDidLoad或viewWillAppear中都无法工作...有什么想法吗...self.navigationController.navigationBarHidden = YES; - Mubin Mall

3
-(void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  self.navigationController.navigationBarHidden = YES;
}

1
我有一个由4个选项卡组成的Tab viewcontroller,其中一个选项卡不需要导航栏,但其他选项卡需要。
之前的答案都无法解决我的问题,但这些代码可以。
//隐藏App导航条,使用RN自己的导航条
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.navigationController.navigationBar.hidden = YES;
//    self.navigationController.navigationBarHidden = YES;    //这句是  **完全没** 个卵用
//    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

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

//恢复App导航条
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.navigationController.navigationBar.hidden = NO;
//    self.navigationController.navigationBarHidden = NO;     //这句是  **完全没** 个卵用
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}

1
不要使用


self.navigationController.navigationBarHidden = YES;

你应该使用 <\p>。
self.navigationController.navigationBar.hidden = NO;

我有点震惊,但这是在我的特定情况下唯一有效的方法。谢谢。 - Grambo

1
在Swift 4中,在viewWillAppear中添加以下内容。
        self.navigationController?.setNavigationBarHidden(false, animated: false)

0

将上述代码行放在viewWillAppear中而不是viewDidLoad。

self.navigationController?.setNavigationBarHidden(false,animated:false)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接