2015-08-31 26 views
0

當用戶點擊3次時,我需要在我的導航欄中更改UIButton的圖像。每個水龍頭顯示一個不同的UIImage及其對應的集合視圖。我得到了完美的動畫集合視圖,但...如何在點擊3次時更改導航按鈕的圖像?

如何獲取按鈕圖像在Swift中更改?

我試過多種方法和似乎無法得到它的工作,例如:

@IBAction func buttonTapped(sender: UIButton) { 

    if let myButton = UIImage(named:"btn1") { 
     sender.setImage(myButton, forState: .Normal) 
    } 
    if let myButton = UIImage(named:"btn2") { 
     sender.setImage(myButton, forState: .Normal) 
    } 
    if let myButton = UIImage(named:"btn3") { 
     sender.setImage(myButton, forState: .Normal) 
    } 
} 

有很多的職位與改變一個UIButton兩個狀態,例如,秒錶或播放/暫停,但我需要導航欄中的3個狀態。

謝謝!

回答

0

我認爲有兩個簡單的方法可以做到這一點:

  1. 您可以在類中設置一個變量int,只是指望它,直到它是2,然後再次將其設置爲0這樣的:

    var buttonCounter: Int = 0 
    
    @IBAction func buttonTapped(sender: UIButton) { 
    
    if buttonCounter == 0{ 
        let myButton = UIImage(named:"btn1") 
        sender.setImage(myButton, forState: .Normal) 
        buttonCounter++ 
    } 
    else if buttonCounter == 1 { 
        let myButton = UIImage(named:"btn2") 
        sender.setImage(myButton, forState: .Normal) 
        buttonCounter++ 
    } 
    else { 
        let myButton = UIImage(named:"btn3") 
        sender.setImage(myButton, forState: .Normal) 
        buttonCounter = 0 
        } 
    } 
    
  2. 你可以做幾乎相同,而不是使用一個變量,你可以使用的UIButton的.TAG屬性,但是。標籤是一個整數,通常用來找出哪個按鈕調用IBAction爲,但你只有一個按鈕調用該函數,所以你可以使用它像這樣:

    @IBAction func buttonTapped(sender: UIButton) { 
    
    if sender.tag == 0{ 
        let myButton = UIImage(named:"btn1") 
        sender.setImage(myButton, forState: .Normal) 
        sender.tag++ 
    } 
    else if sender.tag == 1 { 
        let myButton = UIImage(named:"btn2") 
        sender.setImage(myButton, forState: .Normal) 
        sender.tag++ 
    } 
    else { 
        let myButton = UIImage(named:"btn3") 
        sender.setImage(myButton, forState: .Normal) 
        sender.tag = 0 
    } 
    } 
    
+0

感謝M.看起來不錯。難以實現它的工作。不確定是否因爲按鈕位於導航欄中?錯誤是「[UIBarButtonItem setImage:forState:]:無法識別的選擇發送到實例」 – mvien

+0

看http://stackoverflow.com/questions/2455161/unrecognized-selector-sent-to-instance的一些幫助 –

+0

該鏈接是一個總大雜燴。 ;)沒有太多幫助,儘管我試着檢查NSWindow內存管理器,重新佈線的事件處理程序(插座和操作),刪除了按鈕的目標操作,檢查了SB中的類,並且檢查了三次錯誤。我認爲這是因爲它是一個酒吧按鈕項目和UIBarButtonItem不從UIButton繼承,所以setImage:forState將不會像建議的那樣工作。 – mvien