ChatGPT解决这个技术问题 Extra ChatGPT

UINavigationController 没有导航栏?

我有一个通用应用程序,在 iPad 版本上,我使用 UISplitViewController 创建一个类似于邮件应用程序的界面。

我在推送新的详细信息视图时遇到了问题,因此我决定使用 UINavigationController,这样我就可以根据需要推送和弹出视图。但是,我不想使用导航视图或工具栏。但是无论我做什么,我都无法隐藏导航栏。

我试过在 IB 中取消选中“显示导航栏”,我也尝试过设置:

[self.navigationController setNavigationBarHidden:YES];

viewDidLoad/viewDidAppear/viewWillAppear 中。我还在将要推送的每个视图中都进行了尝试。没有任何效果。

我在这里缺少什么吗?是否可以有没有工具栏或导航栏的 UINavigationController

self 类的超类是什么的实例?

i
iluvatar_GR

您应该能够执行以下操作:

self.navigationController.navigationBar.isHidden = true //Swift 5

其中 self.navigationController (显然)是 UINavigationController 的一个实例。似乎对我有用,但我只是在发布之前对其进行了简单的测试。


所以,在你的情况下, self.navigationController.navigationBar.hidden = YES;
做到了!虽然我要补充一点,我能够简单地检查 IB 中导航工具栏的隐藏框,而不是通过代码来完成。谢谢!
是的,对此感到抱歉。我应该了解您使用 IB 并提到隐藏框而不是使用代码的事实。我最近一直在尝试完全以编程方式创建所有界面,而无需 .xib 文件,所以我直接回答了这个问题。
我称这在我的视图控制器中的 viewwillapear 中,就像 - (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.hidden = YES; } 一样,它可以工作
navBar 被隐藏,但我的视图控制器屏幕没有扩展到全屏
A
Avner

在 Xcode 4.3.2 中:

在故事板中选择导航控制器 在(右侧)实用程序面板中选择属性检查器 在导航控制器类别下,您有两个复选框: [] 显示导航栏 [] 显示工具栏

为我工作...


H
HalR

如果您想要没有导航栏,并且您希望将内容调整到导航栏通常的位置,您应该使用

self.navigationController.navigationBarHidden = YES;

这会给你这样的结果:

https://i.stack.imgur.com/UZbHX.png

self.navigationController.navigationBar.hidden = YES; 为您提供了一个导航栏应位于的空间。像这样:

https://i.stack.imgur.com/QuHcf.png


与 iOS 6 的结果差异有很好的区别。从 IOS 7 开始,空间似乎被删除了,但我会等待更多的人来验证是否是这种情况。
u
user1296082

斯威夫特 4

我将它隐藏在 viewWillAppear 中

     override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        self.navigationController?.isNavigationBarHidden = true;
    }

然后你可以在按下 segue 时把它放回去(如果你想在下一个视图上有后退按钮)

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
     {
        self.navigationController?.isNavigationBarHidden = false;
     }

M
Mobile Dan

Swift 3 以编程方式

self.navigationController.isNavigationBarHidden = true

或者

self.navigationController.navigationBar.isHidden = true

注意:我没有看到这两种在 iOS 10 上测试的方法有什么区别。


C
Cbas

所有这些答案仍然在状态栏的顶部留下一个空间 - 添加此行以删除它:

navController.navigationBar.isHidden = true
navController.accessibilityFrame = CGRect.zero

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅