如何创建用于导航栏和子视图的自定义后退按钮

How to create custom back button for use with nav bar and subviews

我有一个带有表视图的主视图控制器和一个用于显示所选项目详细信息的详细视图控制器。我有一个导航栏,当用户转到详细信息屏幕时,它会插入一个后退按钮。在这个详细信息屏幕上,我有一个容器视图,可以在屏幕的下半部分显示其他视图控制器。当用户调出一个子视图时,我想用我的自定义按钮替换标准后退按钮,该按钮只会退出子视图,而不是返回到主视图控制器。子视图消失后,后退按钮应恢复为库存后退按钮,按下后将返回主视图控制器。

我的问题是我无法使后退按钮显示相同,因此用户不知道我使用不同的按钮来实现这些不同的功能。做这个的最好方式是什么?我无法让文字相匹配,图像是更好的方式吗?

目前在 prepareForSegue 主视图控制器中:

// setting nav button text to "<" which is default when no text
      let backItem = UIBarButtonItem()
      backItem.title = ""
      navigationController?.navigationBar.tintColor = UIColor.whiteColor()
      navigationItem.backBarButtonItem = backItem

当前详细视图控制器:

func createCustomBackButton() {

      self.navigationItem.hidesBackButton = true

      let customFont = UIFont(name: "HelveticaNeue", size: 30.0)!
      UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: customFont], forState: UIControlState.Normal)

      customBackButton = UIBarButtonItem(title: "<", style: .Plain, target: self, action: "back:")
      self.navigationItem.leftBarButtonItem = customBackButton
   }

非常感谢任何帮助,提前致谢!!

所以简短的回答是您必须创建自己的后退按钮

   self.navigationItem.hidesBackButton = true;
  self.navigationItem.leftBarButtonItem = //your custom bar button item

或者,您可以使用默认的 iOS 按钮,而不需要头顶

通过将后台标题设置为“” 并设置后退指示器图像

    self.backIndicatorImage = backButtonIcon.image
    self.backIndicatorTransitionMaskImage = backButtonIcon.image