swift:在导航栏中设置按钮图像

fui*_*iii 9 uinavigationbar uinavigationcontroller uinavigationitem ios swift

我正在尝试在控制器的导航栏中设置后退按钮图像,这是我在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)
    }
Run Code Online (Sandbox Code Playgroud)

我试图把它们放到viewWillLoad,但得到同样的错误

控制台显示错误消息:

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

我不知道哪个部分出了问题.看起来像back_img不是零,但我得到错误说它是零

谢谢!

Sha*_*lam 21

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)
Run Code Online (Sandbox Code Playgroud)

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


Jar*_*aro 16

如果要更改每个控制器中的后退按钮,可以将其添加到didFinishLaunchingWithOptions中的app delegate

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


fui*_*iii 12

我通过查看示例代码找到了答案.1)在故事板中创建一个条形按钮项.2)使用IBOutlet将该按钮链接到控制器3)将图像添加到按钮

 var backImg: UIImage = UIImage(named: "back_btn")
 backBtn.setBackgroundImage(backImg, forState: .Normal, barMetrics: .Default)
Run Code Online (Sandbox Code Playgroud)

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


Man*_*ius 9

    self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "back-icon")
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "back-icon")
Run Code Online (Sandbox Code Playgroud)


Meh*_*hul 6

//这是在默认导航栏中设置带有图像和操作的后退按钮的完美解决方案

首先在导航栏中添加 UIBarButton

在此输入图像描述

然后转到情节提要中文件检查器中的属性并添加空间以隐藏后退按钮标题文本

在 Ui Bar 按钮图像中设置图像

在此输入图像描述

/写点击动作方法/

要启用滑动弹出(返回到上一个控制器),请在 ViewDidLoad 方法中编写两行代码

在此输入图像描述

您将获得带有滑动返回动画的完美后退按钮

在此输入图像描述

//注意:- 要禁用后退按钮上一个视图控制器标题,请在故事板文件检查器中后退按钮的标题文本中添加一个空格

  • 请包含可搜索和可选择的代码文本,而不是图像。 (2认同)