迅速:在导航栏中设置后退button图像

我想在我的控制器的导航栏中设置后退button图像,这里是我在viewDidLoad()中的代码:

var backImg: UIImage? = UIImage(named: "back_btn.png") println(backImg) if var back_img = backImg { println("GET IT") println(back_img) println(UIControlState.Normal) println(UIBarMetrics.Default) self.navigationController.navigationBar.backItem.backBarButtonItem.setBackButtonBackgroundImage(back_img, forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default) } 

我试图把他们viewWillLoad,但得到相同的错误

有错误信息的控制台:

 <UIImage: 0x7ff37bd85750> GET IT <UIImage: 0x7ff37bd85750> VSC14UIControlState (has 1 child) (Enum Value) fatal error: unexpectedly found nil while unwrapping an Optional value 

我不知道哪个部分出了问题。 似乎back_img不是零,但我得到错误说这是零

谢谢!

如果您想更改每个控制器中的后退button,可以将其添加到didFinishLaunchingWithOptions中的应用程序委托

  let backImg: UIImage = UIImage(named: "back_button")! UIBarButtonItem.appearance().setBackButtonBackgroundImage(backImg, forState: .Normal, barMetrics: .Default) 

我已经通过查看示例代码来弄清楚了。 1)在故事板中创build一个栏button项目。 2)使用IBOutlet将该button链接到控制器3)将图像添加到button

  var backImg: UIImage = UIImage(named: "back_btn") backBtn.setBackgroundImage(backImg, forState: .Normal, barMetrics: .Default) 

PS:应该将图像添加到Images.xcassets文件夹中,详细信息请参阅示例代码UICatalog 。

Swift 3.0中,将下面的代码放在appdelegate didFinishLaunchingWithOptions方法中,它会很好地工作

 let backImage = UIImage(named: "BackNavigation")?.withRenderingMode(.alwaysOriginal) UINavigationBar.appearance().backIndicatorImage = backImage UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -80.0), for: .default) 

最后一行将删除Navigation Back Button的标题,如果你不想删除标题,然后只删除最后一行

  self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "back-icon") self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "back-icon") 

//这里是完美的解决scheme在默认导航栏中设置图像和动作button

首先在导航栏中添加UIBarButton

在这里输入图像说明

然后转到故事板中文件检查器中的属性,并添加空间来隐藏button标题文本

在Ui Barbutton图像中设置图像

在这里输入图像说明

/ 点击操作方法 /

要启用滑动以popup(返回到前一个控制器),请在ViewDidLoad方法中写入两行代码

在这里输入图像说明

你将得到完美的后退button与滑动回到animation

在这里输入图像说明

//注意: – 要禁用前一个viewcontroller标题的后退button,在storyboard文件检查器的后退button的标题文本中添加一个空格

另一种方法:单击故事板中的导航控制器(而不是UIViewController本身的导航控制器)。 然后,在RHS的属性部分,你会看到图像和背面蒙版。 设置后面的图像,你就完成了。