Ios UINavigationController不带导航栏?

Ios UINavigationController不带导航栏?,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我有一个通用应用程序,在iPad版本中,我使用UISplitViewController创建了一个类似于邮件应用程序的界面 我在推送新的细节视图时遇到困难,所以我决定使用UINavigationController,这样我就可以根据需要推送和弹出视图。但是,我不想使用导航视图或工具栏。但无论我做什么,我都无法隐藏导航栏 我已尝试取消选中IB中的“显示导航栏”,并尝试设置: [self.navigationController setNavigationBarHidden:YES]; 在view

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

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

我已尝试取消选中IB中的“显示导航栏”,并尝试设置:

[self.navigationController setNavigationBarHidden:YES];
viewdiload
/
viewdilease
/
视图将出现。我也在将要推送的每个视图中尝试了它。什么都不管用


这里有我遗漏的东西吗?是否可以在没有工具栏或导航栏的情况下使用
UINavigationController

self.navigationController.navigationBar.isHidden = true //Swift 5
其中self.navigationController(显然)是UINavigationController的实例。似乎对我有用,但在发布之前我只是简单地测试了一下。

在Xcode 4.3.2中:

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

    []显示导航栏

    []显示工具栏


  • 为我工作…

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

    self.navigationController.navigationBarHidden = YES;
    
    这会产生如下结果:

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

    Swift 3以编程方式 或


    注意:在iOS 10上测试时,我没有发现这两种方法之间的差异。

    Swift 4

    我将它隐藏在视图中

         override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
    
            self.navigationController?.isNavigationBarHidden = true;
        }
    
    然后,您可以在按下一个序列时将其放回原位(如果您想在下一个视图中使用“后退”按钮)


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

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

    类的超类是什么
    self
    是的实例?因此,在您的例子中,self.navigationController.navigationBar.hidden=YES;成功了!不过我要补充的是,我可以简单地选中IB中Nagiviation工具栏的隐藏框,而不是通过代码来完成。谢谢是的,很抱歉。我应该知道您使用的是IB,并且提到了隐藏框而不是代码。我最近很想完全以编程方式创建没有.xib文件的所有界面,所以我直接回答了这个问题。我称之为我的视图控制器中的is in viewWillapar,如下所示
    -(void)viewWillDisplay:(BOOL)动画{self.navigationController.navigationBar.hidden=YES;}
    而且它可以工作导航栏是隐藏的,但是我的视图控制器屏幕没有扩展到全屏,这与iOS 6在结果上的差异非常好。从IOS 7开始,空间似乎已被删除,但我将等待更多人验证这一点。
         override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
    
            self.navigationController?.isNavigationBarHidden = true;
        }
    
         override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
         {
            self.navigationController?.isNavigationBarHidden = false;
         }
    
    navController.navigationBar.isHidden = true
    navController.accessibilityFrame = CGRect.zero