2016-09-21 43 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

我們沒有任何的可能性來直接訪問來自的UIImage /的UIImageView的imageName。我們可以將它存儲在某處/獲取一些參考。 – 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

基本上你可以做的是子類UIBarButtonItem和申報財產var imageName: String?,當你分配imageUIBarButtonItem,與實際值賦給這個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 
} 
+0

謝謝Santosh。有一點令人沮喪的是,我不能以更乾淨的方式獲得該財產,但非常感謝你:) – gersonmontenegro

相關問題