【问题标题】:Custom Navigation Bar Subview does not hide when a new viewcontroller is pushed推送新的视图控制器时,自定义导航栏子视图不会隐藏
【发布时间】:2019-12-10 05:07:04
【问题描述】:

所以在我的HomeViewController 上,我添加了一个自定义导航栏@IBOutlet weak var navBar: UIView!,并将其添加到导航栏中:

self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.backgroundColor = .clear
self.navigationController?.view.insertSubview(navBar, belowSubview: navigationController!.view)
self.navigationController?.navigationBar.isTranslucent = false
self.edgesForExtendedLayout = []

现在当我推送MenuViewController

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "MenuVC") as! MenuViewController
self.navigationController?.pushViewController(vc, animated: true)

这个自定义navBar 仍然在顶部。我希望再次显示默认导航栏,因为我只想在 HomeViewController 上自定义 navBar

【问题讨论】:

  • 最好不要使用导航栏,而是在当前 VC 上使用自定义视图。和所有其他的导航栏。只是一个意见。 :)

标签: ios swift uinavigationcontroller uinavigationbar


【解决方案1】:
  • 您已将该自定义navbar 添加到navigationController.view 中, 这就是为什么它会出现在每个viewController 上,其中navigationController 被使用或将被使用。

您可以执行以下操作来解决此问题

  • 将该navbar 添加到当前UIView 的子视图中

self.view.addSubview(navbar)

  • 对特定的UIViewController 隐藏navigationBar

self.navigationController?.setNavigationBarHidden(true, animated: false)

  • 显示给下一个ViewController

self.navigationController?.setNavigationBarHidden(false, animated: false)

【讨论】:

    【解决方案2】:

    您应该在推送MenuViewController 之前从navigationController 中删除customView,或者使用MenuViewControllerviewWillAppear 中的标签访问customview 并将其从superview 中删除或隐藏

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多