如何在 iOS 中禁用导航栏

Posted

技术标签:

【中文标题】如何在 iOS 中禁用导航栏【英文标题】:How to disable navigation bar in iOS 【发布时间】:2014-02-27 10:26:22 【问题描述】:

我想在添加子视图时禁用导航栏,并在删除子视图后再次启用它。怎么做。显示操作表时的类似操作。

【问题讨论】:

【参考方案1】:

在斯威夫特中:

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

【讨论】:

【参考方案2】:

使用(目标-C):

[self.navigationController setNavigationBarHidden:YES animated:YES];

【讨论】:

我需要禁用它并让它看起来像 ActionSheet 一样褪色。 将导航栏的 alpha 值设置为 0.6 或 0.5 以进行淡入淡出,当需要正常时,将其重置为 1。 navigationBar.alpha=0.5f; 这可行,但状态栏现在在 ios7 中淡出 这出乎意料。因为状态栏将具有 alpha 1。您可以尝试更改状态栏类型 lightcontent。如果问题仍然存在,对不起兄弟。【参考方案3】:

请注意,如果您想避免以这种方式再次启用它们,您可能必须跟踪最初禁用的按钮。

我也没有检查这是否包括后退按钮。我猜它没有,所以如果需要,你也必须考虑到这一点。

NSArray* allBarButtons = [self.navigationController.navigationBar.topItem.leftBarButtonItems arrayByAddingObjectsFromArray:self.navigationController.navigationBar.topItem.rightBarButtonItems];
for (UIBarButtonItem* barButton in allBarButtons) 
     barButton.enabled = NO;

【讨论】:

【参考方案4】:

Swift 4 中,将下面的代码放在 ViewController 的 viewDidLoad() 中。

self.navigationController?.isNavigationBarHidden = true

【讨论】:

【参考方案5】:
self.navigationController.navigationBar.topItem.leftBarButtonItem.enabled = NO;
self.navigationController.navigationBar.topItem.rightBarButtonItem.enabled = NO;
self.navigationController.navigationBar.topItem.backBarButtonItem.enabled = NO;

【讨论】:

【参考方案6】:

[[self navigationController] setNavigationBarHidden:YES 动画:YES];

【讨论】:

以上是关于如何在 iOS 中禁用导航栏的主要内容,如果未能解决你的问题,请参考以下文章

按下按钮并成功重定向到另一个页面后,如何禁用导航栏链接?

如何禁用导航栏项目?

触摸时禁用其他栏按钮项:导航栏

如何在 iOS 的标签栏中禁用蓝色突出显示?

iOS禁用按标签栏按钮弹出到根视图

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?