我有四个自定义 @IBAction func first_scheme(_ sender: Any) {
bRec = !bRec
if (bRec == true) {
firstscheme_button.setImage(UIImage(named: "uncheck.png"), for: .normal)
} else {
firstscheme_button.setImage(UIImage(named: "check.png"), for: .normal)
}
}
,我应用了按钮图像收音机(选中并选中)。四个按钮我有单独的操作方法,可以轻松更改图像,但是如果我选中第一个按钮,则另外三个按钮需要取消选中。它应该像单选按钮一样反应。
在这里,在我的代码下方
//###########################################################################
// Soft constraints
// ############################################################################
rule "distanceToPreviousStandstill"
when
$customer : Customer(previousStandstill != null,$distanceFromPreviousStandstill : distanceFromPreviousStandstill)
then
scoreHolder.addSoftConstraintMatch(kcontext, - $distanceFromPreviousStandstill);
end
rule "distanceFromLastCustomerToDepot"
when
$customer : Customer(previousStandstill != null)
not Customer(previousStandstill == $customer)
then
Vehicle vehicle = $customer.getVehicle();
scoreHolder.addSoftConstraintMatch(kcontext, - $customer.getDistanceTo(vehicle));
end
答案 0 :(得分:1)
如果您始终有4个单选按钮,则可以将它们放在一个数组中。
var radioButtons: [ButtonType] = [r1, r2, r3, r4]
您现在可以循环访问该按钮,并将另一个按钮的值设置为“未选中”。
func setRadioButtons(button: ButtonType) {
for radioButton in radioButtons {
if radioButton !== button {
radioButton.setImage(UIImage(named: "uncheck.png"), for: .normal)
}
}
}
@IBAction func first_scheme(_ sender: Any) {
bRec = !bRec
if bRec {
firstscheme_button.setImage(UIImage(named: "uncheck.png"), for: .normal)
} else {
firstscheme_button.setImage(UIImage(named: "check.png"), for: .normal)
}
setRadioButtons(button: sender)
}
替代方法
如果您要做的只是单击按钮选中,而其他按钮取消选中,则逻辑更简单。
为所有单选按钮创建常见操作,并为所有UIButton创建 IBOutletcollection ,
var radioButtons: [UIButton] = [r1, r2, r3, r4]
最终按以下方式执行常用方法
func setRadioButtons(button: UIButton) {
for getradioButton in radioButtons {
getradioButton.setImage(UIImage(named: "uncheck.png"), for: .normal)
}
button.setImage(UIImage(named: "check.png"), for: .normal)
}
答案 1 :(得分:1)
我建议您使用简单的tag
属性在按钮上设置标签,然后将其保存在通用侦听器中。
//first button selected
var lastTag = 0
@IBAction func first_scheme(_ sender: UIButton) {
buttonArray[lastTag].setImage(UIImage(named: "uncheck.png"), for: .normal)
lastTag = sender.tag
sender.setImage(UIImage(named: "check.png"), for: .normal)
}
答案 2 :(得分:0)
您可以在自定义UIButton中覆盖 isSelected 变量,并根据 isSelected 值设置图像。
class customButton: UIButton {
override var isSelected: Bool {
willSet {
self.setImage(UIImage.init(named: "checked"), for: .normal)
}
didSet {
self.setImage(UIImage.init(named: "unchecked"), for: .normal)
}
}
}
为四个自定义UIButton创建 4 IBOutlets和 4 IBAction之后。您可以轻松地选择和取消选择按钮,并应用您的自定义行为。
@IBAction func firstButtonAction(_ sender: Any) {
if let button = sender as? customButton {
button.isSelected = !button.isSelected
}
secondButton.isSelected = false
thirdButton.isSelected = false
fourthButton.isSelected = false
}