2016-09-21 13 views
0

私はカスタムクラスでこのメソッドを持っている:Swift 3のUIBarButtonItemボタンでカスタムイメージ名を取得する方法は?

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

私は私に「imagenameの」パラメータに渡された同じ名前を付けることができ、別の方法を書きたいと思います...のようなもの:

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

私はいくつかのプロパティとサブプロパティのようなものを試してみる

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

その他、しかしそれらのどれも動作していません。

ありがとうございます!

+0

。私たちはそれをどこかに保管したり、参考にしたりすることができました。 – Santosh

+0

Dup of http://stackoverflow.com/questions/10279314/how-to-get-image-name-used-in-an-uiimage – Santosh

+0

dupではない、このケースはSwift用であり、そのケースはObj用です-c :) – gersonmontenegro

答えて

0

基本的に何を行うことができますすることはvar imageName: String?としてプロパティをサブクラスUIBarButtonItemと宣言され、あなたのUIBarButtonItemimageを割り当てるときに、このimageNameは実際の値に割り当てます。カスタムの 'UIBarButtonItem'クラスでない限り、後でどこでもアクセスできます。例えば

:私たちが直接UIImage/UIImageViewからimagenameのにアクセスするためのあらゆる可能性を持っていない

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 
} 
+0

ありがとうSantosh。私はもっ​​とクリーンな方法でそのプロパティを取ることができないことを知って少しイライラしていますが、あまりにもありがとう:) – gersonmontenegro

関連する問題