没有导航栏的UINavigationController?

时间:2011-04-23 18:05:17

标签: ios uinavigationcontroller

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

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

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

[self.navigationController setNavigationBarHidden:YES];

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

这里有什么我想念的吗?是否有UINavigationController没有工具栏或导航栏?

6 个答案:

答案 0 :(得分:183)

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

self.navigationController.navigationBar.hidden = YES;

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

答案 1 :(得分:39)

在Xcode 4.3.2中:

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

    []显示导航栏

    []显示工具栏

  4. 为我工作......

答案 2 :(得分:39)

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

self.navigationController.navigationBarHidden = YES;

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

enter image description here

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

enter image description here

答案 3 :(得分:7)

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;
     }

答案 4 :(得分:3)

Swift 3编程

self.navigationController.isNavigationBarHidden = true

self.navigationController.navigationBar.isHidden = true

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

答案 5 :(得分:0)

所有这些答案仍然在状态栏的顶部保留一个空格-添加此行也将其删除:

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