2016-09-22 91 views
1

我有一個按鈕,我想在點按(選擇)時更改背景顏色和文本,並在再次點擊(取消選擇)時將其恢復到其原始狀態。我可以選擇它,但我無法取消選擇它。我已經研究了SO,我得到錯誤在此代碼中選擇按鈕的if-else部分選擇/取消選擇UIButton之間切換

@IBAction func btn1Pressed(_ sender: AnyObject) { 
     sender.setTitleColor(UIColor.blue, for: UIControlState.normal) 
     (sender as! UIButton).backgroundColor = UIColor.green 

     if sender.isSelected { 
      sender.selected = false 
     } 
     else { 
      sender.selected = true 
     } 
    } 
+0

嘗試將其更改爲'(發件人爲!的UIButton).selected =!(發件人爲!的UIButton).selected' – Tj3n

+0

它不會恢復到原來的狀態,但有一個藍色的highligth – Coder221

+0

你是什麼默認背景顏色廣告文字?在您的代碼中,您只將按鈕屬性更改爲您選擇的狀態,不會恢復原狀 – Tj3n

回答

0

試試這個:

@IBAction func btn1Pressed(_ sender: AnyObject) { 

    guard let button = sender as? UIButton else { return } 

    if !button.isSelected { 
     button.isSelected = true 
     button.setTitleColor(UIColor.blue, for: UIControlState.normal) 
     button.backgroundColor = UIColor.green 
    } 
    else { 
     button.isSelected = false 
     button.setTitleColor(UIColor.green, for: UIControlState.normal) 
     button.backgroundColor = UIColor.blue 
    } 
} 
+0

都選擇/取消選擇作品,唯一的是當我選擇按鈕在字體上有一個藍色突出顯示 – Coder221

+0

更改按鈕的tintColor在故事板中清除顏色:D – Tj3n

+0

工作完美:)。還有一個問題,如果你不介意,我有十個這些按鈕,所以我需要爲所有這十個按鈕編寫操作方法 – Coder221

0

更改背景顏色從storyboard象下面這樣state config選擇selected然後更改背景顏色,以及coustomize默認正常按鈕。

enter image description here

,並在行動中

(sender as! UIButton).selected = !(sender as! UIButton).selected 
+0

我收到錯誤消息「無法指定給財產:'發件人'是'讓'常量」 – Coder221

+0

檢查我更新的答案,從故事板自定義選擇和默認的按鈕配置,並在他的行動只是切換按鈕狀態。 –

0

下面使用試試這個

@IBAction func btn1Pressed(sender: UIButton) { 


    if sender.selected { 
     sender.selected = false 
     sender.setTitleColor(UIColor.redColor(), forState: .Normal) 
     sender.backgroundColor = UIColor.blackColor() 


    } 
    else { 
     sender.selected = true 
     sender.setTitleColor(UIColor.redColor(), forState: .Selected) 
     sender.backgroundColor = UIColor.blackColor() 
    } 
} 
+0

我以前試過這個,我得到這些錯誤「類型」Bool「壞了」和「不能分配給屬性:'發送者'是'讓'常量」 – Coder221

0

這聽起來好像UISwitch是你在找什麼。嘗試一下,而不是浪費時間來實現已經存在的東西。

0

請試試這個代碼首先,你需要按鈕的箱子行動和PROPERT像

@IBOutlet var btn_ButtonPressed: UIButton! 

然後行動。

@IBAction func click_ButtonPressed(_ sender: Any) { 
    if !sender.isSelected() { 
    sender.selected = true 
    btn_ButtonPressed.setTitleColor(UIColor.red, forState: .normal) 
    btn_ButtonPressed.backgroundColor = UIColor.yellow 
    } 
else { 
    sender.selected = false 
    btn_ButtonPressed.setTitleColor(UIColor.yellow, forState: .normal) 
    btn_ButtonPressed.backgroundColor = UIColor.red 
    } 
} 
+0

我試着完全一樣,我得到這些錯誤「類型」布爾「壞了」和「不能分配給屬性:'發送者'是'讓'常量」 – Coder221

+0

@ Coder221你可以改變isSelected屬性。 – MRizwan33

相關問題