【问题标题】:Unable to hide navigation bar in xcode无法在 xcode 中隐藏导航栏
【发布时间】:2021-10-02 18:00:03
【问题描述】:

我使用 xcode 4.6.3 中的 Storyboard 编辑器制作了一个简单的应用程序。第一个视图是一个导航控制器,带有一些简单的导航按钮。然后,默认情况下,当我将按钮连接到他们的每个页面时,导航栏会添加到我创建的每个新视图的顶部。

但是,我希望首页(我想我会称之为着陆页)没有顶栏。我按照here 的说明操作,了解如何在情节提要模式下禁用顶部导航栏。但是,这会禁用链接到该主视图的所有视图的所有导航栏。

我还更改了子页面顶部导航栏的颜色,但这也不起作用。我在模拟器上运行应用程序,但更改似乎没有生效。

谁能给点建议?我是 Objective c 的新手(主要是 Java 经验),并希望快速推出一个应用程序。我的问题是时间,Storyboard 似乎已经解决了这个问题,因为我可以很快地完成一些事情。

【问题讨论】:

    标签: xcode navigation


    【解决方案1】:

    我刚刚启动了一个应用程序并遇到了同样的问题,您正在寻找的行是:

    self.navigationController.navigationBar.hidden = YES;
    

    完整代码是:

    - (void)viewWillAppear:(BOOL)animated
    {
         self.navigationController.navigationBar.hidden = YES;
    }
    

    确保使用下一个控制器重新打开它:

    self.navigationController.navigationBar.hidden = NO;
    

    仅在更高版本的 Xcode 中进行了测试,但在 4.6.3 上应该可以正常工作

    (编辑以从 viewDidLoad 更改为 viewWillAppear)

    【讨论】:

      【解决方案2】:

      在 Swift 中你可以使用几乎显而易见的

      self.navigationController?.navigationBar.isHidden = true
      

      self.navigationController?.navigationBar.isHidden = false
      

      显示或隐藏导航栏。确保您允许加载视图,因此请调用 viewWillAppearviewDidAppear 中的视图。

      【讨论】:

        【解决方案3】:

        这可能是一个旧帖子,但似乎仍然相关。我遇到了这个问题,并认为这可能对更新到 Swift 版本 4 有用。

        斯威夫特 4

        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            navigationController?.setNavigationBarHidden(true, animated: false)
        }
        
        override func viewDidDisappear(_ animated: Bool) {
            super.viewDidDisappear(animated)
            navigationController?.setNavigationBarHidden(false, animated: true)
        }
        

        例如,您可以将其插入到您不想看到导航栏的初始视图控制器中。这将允许它隐藏导航栏。并在下一个 segue 中对其进行动画处理。

        要记住一件事,因为它会以动画形式显示在视图中,因此您应确保约束未与包含导航栏的保存区域对齐,而是与超级视图对齐。

        希望这会有所帮助。

        【讨论】:

          【解决方案4】:

          下面的答案是正确的,并且与 Swift 4 相关。另一个帖子使用 viewWillDisappear 再次显示导航栏而不是 viewDidDisappear,但这不起作用。对于 swift 4 中遇到此问题的每个人请勿使用

          override func viewWillDisappear(_ animated: Bool) {
              super.viewWillDisappear(animated)
              self.navigationController?.setNavigationBarHidden(false, animated: true)
          }
          

          要再次显示导航栏,请使用

           override func viewDidDisappear(_ animated: Bool) {
              super.viewDidDisappear(animated)
              self.navigationController?.setNavigationBarHidden(false, animated: true)
          }
          

          【讨论】:

            猜你喜欢
            • 2013-12-04
            • 2013-09-03
            • 2019-01-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多