2016-09-22 58 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

相关问题