如何在Swift 3中的UIBarButtonItem按钮中获取自定义图像名称?

时间:2016-09-21 14:47:21

标签: ios swift swift3

我在自定义类中使用此方法:

func changeImage(btn:UIBarButtonItem, imageName: String){
    btn.image = UIImage(named: imageName)
}

我想写另一种方法,可以在' imageName'中传递相同的名称。参数...类似于:

func getImageName(btn:UIBarButtonItem) -> String{
    return btn.image.someVarOrMethodWithImageName
}

我尝试了一些属性和subProperties,如

    btn.image?.accessibilityIdentifier
    btn.image?.imageAsset.debugDescription
    btn.image?.imageAsset?.value(forKey: "named")

还有其他人,但他们都没有工作。

非常感谢!

1 个答案:

答案 0 :(得分:0)

基本上你可以做的是子类UIBarButtonItem并将属性声明为var imageName: String?,当你将image分配给UIBarButtonItem时,请指定imageName具有实际价值。这样你以后可以在任何地方访问它(除非它是你自定义的'UIBarButtonItem'类)。

例如:

class MyBarButtonItem: UIBarButtonItem {
    var imageName: String?
}

//....
func changeImage(btn: MyBarButtonItem, imageName: String){
    btn.image = UIImage(named: imageName)
    btn.imageName = imageName
}

func getImageName(btn: MyBarButtonItem) -> String? {
    return btn.imageName
}