我在自定义类中使用此方法:
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")
还有其他人,但他们都没有工作。
非常感谢!
答案 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
}