【问题标题】:UINavigationController without navigation bar?UINavigationController 没有导航栏?
【发布时间】:2011-08-11 13:52:12
【问题描述】:

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

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

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

[self.navigationController setNavigationBarHidden:YES];

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

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

【问题讨论】:

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

标签: ios uinavigationcontroller


【解决方案1】:

您应该能够做到以下几点:

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; } 并且它有效
  • 导航栏被隐藏,但我的视图控制器屏幕没有展开到全屏
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    斯威夫特 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;
         }
    

    【讨论】:

      【解决方案4】:

      Swift 3 以编程方式

      self.navigationController.isNavigationBarHidden = true
      

      self.navigationController.navigationBar.isHidden = true
      

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

      【讨论】:

        【解决方案5】:

        如果您不希望导航栏,并且希望将内容调整到导航栏正常的位置,则应使用

        self.navigationController.navigationBarHidden = YES;
        

        这会给你这样的结果:

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

        【讨论】:

        • 与 iOS 6 的结果差异非常好区分。从 IOS 7 开始,空间似乎被删除了,但我会等待更多人验证是否如此。跨度>
        【解决方案6】:

        在 Xcode 4.3.2 中:

        1. 在情节提要中选择导航控制器
        2. 在(右侧)实用程序面板中选择属性检查器
        3. 在导航控制器类别下,您有两个复选框:

          [] 显示导航栏

          [] 显示工具栏

        为我工作...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-21
          相关资源
          最近更新 更多