【问题标题】:Navigate from Bar Button item to navigation controller从 Bar Button 项导航到导航控制器
【发布时间】:2021-05-11 02:56:49
【问题描述】:

我有一个带有条形按钮项的视图控制器,以及在此按钮上的一个操作以从视图导航到另一个导航视图控制器,但是当我导航到导航控制器时,导航栏被隐藏了!

我的导航代码

guard let window = UIApplication.shared.keyWindow else { return }
    let sb = UIStoryboard(name: "Main", bundle: nil)
    let vc = sb.instantiateViewController(identifier: "AdPostViewController")
    window.rootViewController = vc
    UIView.transition(with: window, duration: 0.5, options: .transitionCrossDissolve, animations: nil, completion: nil)

澄清 我没有在代码中声明 isNavigationBarhidden,我将视图控制器嵌入到导航控制器中,当我从主视图控制器导航到导航控制器时,我看到该栏已隐藏,我想显示它

【问题讨论】:

  • AdPostViewController是你要显示的navigationController的标识符吗?
  • 我认为你应该给你的导航控制器一个标识符并引用它而不是 AdPostViewController 否则它将加载你的视图控制器而没有导航控制器/导航栏

标签: ios swift xcode uinavigationcontroller uibarbuttonitem


【解决方案1】:

您可以设置isNavigationBarHidden。苹果记录如下:

默认值为假。设置此属性会更改导航栏的可见性,而不会对更改进行动画处理。如果您想为更改设置动画,请改用 setNavigationBarHidden(_:animated:) 方法。

【讨论】:

  • 这是在目的地吗?还是我将从中推送的视图控制器?
  • 您取消了“导航栏已隐藏!”所以我认为在目的地
  • 我没有在代码中声明这一点,我将视图控制器嵌入到导航控制器中,当我从主视图控制器导航到导航控制器时,我看到该栏已隐藏,我想显示它
  • 您在问题中声明。
  • 查看 Mika 的答案
【解决方案2】:

我建议不要更改window.rootViewController,而是向视图控制器显示:

func present(_ viewControllerToPresent: UIViewController, 
    animated flag: Bool, 
  completion: (() -> Void)? = nil)

你的代码变成:

        let sb = UIStoryboard(name: "Main", bundle: nil)
        let vc = sb.instantiateViewController(identifier: "AdPostViewController")
        vc.modalTransitionStyle = .crossDissolve
        self.present(vc, animated: true, completion: nil)

编辑: 您应该检查 AdPostViewController 是否是 Storyboard 中 navigationController 的标识符。

【讨论】:

  • 您的回答完美地显示了导航控制器,但不是全屏显示,它显示为弹出框@d-mika
  • 添加vc.modalPresentationStyle = .fullScreen 或相应地修改情节提要。 (在属性检查器中,属性 Presentation
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多