首页 文章

没有导航栏的UINavigationController?

提问于
浏览
112

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

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

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

[self.navigationController setNavigationBarHidden:YES];

viewDidLoad / viewDidAppear / viewWillAppear . 我也在每个将要推送的视图中尝试过它 . 什么都行不通 .

这里有什么我想念的吗?是否可以在没有工具栏或导航栏的情况下使用 UINavigationController

5 回答

  • 6

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

    self.navigationController.navigationBar.hidden = YES;
    

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

  • 38

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

    self.navigationController.navigationBarHidden = YES;
    

    这会给你一个像这样的结果:

    enter image description here

    self.navigationController.navigationBar.hidden = YES; 为您提供了navigationBar所在的空间 . 像这样:

    enter image description here

  • 3

    在Xcode 4.3.2中:

    • 在故事板中选择导航控制器

    • 在(右侧)“实用程序”面板中选择“属性”检查器

    • 在导航控制器类别下,您有两个复选框:

    []显示导航栏

    []显示工具栏

    为我工作......

  • 182

    Swift 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;
         }
    
  • 39

    Swift 3以编程方式

    self.navigationController.isNavigationBarHidden = true
    

    要么

    self.navigationController.navigationBar.isHidden = true
    

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

相关问题