多个 UIButtons 只能选择一个 - swift 中的子类
Multiple UIButtons only one can be selected - subclass in swift
我写了一个选择和取消选择按钮的子类。我已将这个子类放在视图控制器中的大约 5 个按钮上。
我想修改代码,如果用户选择一个然后选择另一个,第一个将被取消选择。
我正在考虑使用按钮上的 .tag 来计算选择了哪些按钮,并在按下下一个按钮时删除选择。
这是代码:
感谢
class ChangeColour: UIButton {
var buttontagpressed: Int = 0
var isChecked:Bool = false{
didSet{
if isChecked == true {
self.backgroundColor = UIColor(red:0.27, green:0.29, blue:0.31, alpha:1.0)
self.setTitleColor(UIColor.whiteColor(), forState: .Normal)
buttontagpressed = self.tag
}
else
{
self.backgroundColor = UIColor(red:0.09, green:0.83, blue:0.56, alpha:1.0)
self.setTitleColor(UIColor(red:0.24, green:0.24, blue:0.24, alpha:1.0), forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: "buttonselected:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonselected (sender:UIButton) {
buttontagpressed = self.tag
if (sender == self)
{
if isChecked == true
{
isChecked = false
}
else
{
isChecked = true
}
}
}
}
而不是使用标签(我认为这是一个非常丑陋的解决方案),我倾向于将 属性 添加到您的 class 以保留对先前选择的按钮的引用。这个解决方案会更优雅 - 或者您可以使用 UINotificationCenter
向所有按钮广播消息以启动取消选择。
我写了一个选择和取消选择按钮的子类。我已将这个子类放在视图控制器中的大约 5 个按钮上。
我想修改代码,如果用户选择一个然后选择另一个,第一个将被取消选择。
我正在考虑使用按钮上的 .tag 来计算选择了哪些按钮,并在按下下一个按钮时删除选择。
这是代码:
感谢
class ChangeColour: UIButton {
var buttontagpressed: Int = 0
var isChecked:Bool = false{
didSet{
if isChecked == true {
self.backgroundColor = UIColor(red:0.27, green:0.29, blue:0.31, alpha:1.0)
self.setTitleColor(UIColor.whiteColor(), forState: .Normal)
buttontagpressed = self.tag
}
else
{
self.backgroundColor = UIColor(red:0.09, green:0.83, blue:0.56, alpha:1.0)
self.setTitleColor(UIColor(red:0.24, green:0.24, blue:0.24, alpha:1.0), forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: "buttonselected:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonselected (sender:UIButton) {
buttontagpressed = self.tag
if (sender == self)
{
if isChecked == true
{
isChecked = false
}
else
{
isChecked = true
}
}
}
}
而不是使用标签(我认为这是一个非常丑陋的解决方案),我倾向于将 属性 添加到您的 class 以保留对先前选择的按钮的引用。这个解决方案会更优雅 - 或者您可以使用 UINotificationCenter
向所有按钮广播消息以启动取消选择。