【问题标题】:How to add a back button to a custom made UINavigationBar如何将后退按钮添加到自定义 UINavigationBar
【发布时间】:2017-02-04 01:05:23
【问题描述】:

我使用约束制作了一个自定义 UINavigationBar。我无法为其添加后退按钮。我可以只制作一个 UI Button 并将其分层,但我不想这样做,除非我必须这样做。

这里是使用的相关代码。

let navBar: UINavigationBar = {


    let myNav = UINavigationBar()

    myNav.translatesAutoresizingMaskIntoConstraints = false

    return myNav

    }()


func setUpNavBarView(){


self.navBar.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
self.navBar.topAnchor.constraint(equalTo: view.topAnchor as NSLayoutAnchor<NSLayoutYAxisAnchor>).isActive = true
self.navBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
self.navBar.heightAnchor.constraint(equalToConstant: 60).isActive = true

   self.navBar.barTintColor = UIColor.red

    self.navBar.isTranslucent = false


}

【问题讨论】:

  • 导航控制器中有以前的视图控制器吗?
  • 我没有,您是否认为这将迫使它添加一个后退按钮,因为前一个 viewController 将是堆栈中的第一个?
  • 我相信是这样,通过向导航控制器添加前一个视图控制器,它应该有一个默认为前一个视图控制器名称的后退按钮,如果为 nil,则返回。
  • 我现在正在检查,但我不确定仅以我所做的方式添加导航控制器是否会真正解决它。
  • 不只是添加导航控制器,在带有navBar的视图中,还需要有前一个视图控制器。

标签: ios swift uinavigationbar back-button


【解决方案1】:
lazy var backButton: UIBarButtonItem = {
  let button = UIBarButtonItem(image: "Image", style: .plain, target: self, action: #selector(backButtonTapped))
  return button
}()

navigationItem.setLeftBarButton(backButton, animated: false)

func backButtonTapped() {
   //Do transition here
}

【讨论】:

  • 我是否将 navigationItem.setLeftBarButton(backButton, animated: false) 放入 viewDidLoad?
  • 从技术上讲,您可以在 VC 的生命周期中的任何时间执行此操作,但如果您希望在视图出现时出现,那么可以,viewDidLoad 是一个好地方。
  • 我测试了你的代码,没有错误,但是按钮没有出现。我在上面写着“图像”的地方放了一张测试图像。我要玩一下 viewController
  • 确保您仍然将视图控制器嵌入到导航控制器中。您还可以使用在图片中使用标题初始化的 barButton。
猜你喜欢
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2013-09-23
  • 1970-01-01
相关资源
最近更新 更多