目前我们有一个有5个按钮的单元格,当一个按钮被按下时,它会变成白色,而所有其他按钮都会变成黑色。按钮上有一个单独的复选标记图像视图,该复选标记图像视图将被选中或取消选中,具体取决于按钮是否被选中。因此,下面的代码适用于imageView:
@IBAction func changeColor(_ sender: Any) {
guard let button = sender as? UIButton else {
return
}
self.selectedCheckMarkImageView1.isHidden = button.tag != 1
self.selectedCheckMarkImageView2.isHidden = button.tag != 2
self.selectedCheckMarkImageView3.isHidden = button.tag != 3
self.selectedCheckMarkImageView4.isHidden = button.tag != 4
self.selectedCheckMarkImageView5.isHidden = button.tag != 5
}
但是,当尝试使用相同的方法更改按钮图像时:
button.setImage(UIImage(named: "LR - Nano White - Selected")!, for: .normal) = button.tag != 1
出现错误:
无法赋值:函数调用返回不可变值
我尝试将其放在switch语句中,如下所示:
switch (button.tag) {
case != 1: //error occurs here
default:
//
}
但得到的错误是:
'!=‘不是前缀一元运算符
有没有办法解决这个问题?
发布于 2018-08-22 04:18:50
开关是对1个值的替换,将其与多个值的固定集进行比较,以选择要执行的单个分支。您会遇到这样一种情况:根据多个不同的值检查多个值,并进行多个不同的响应。单个交换机不能真正取代这一点。
相反,我建议使用for
循环来减少重复。
let selectedCheckMarkImageViews = [
selectedCheckMarkImageView1,
selectedCheckMarkImageView2,
selectedCheckMarkImageView3,
selectedCheckMarkImageView4,
selectedCheckMarkImageView5,
]
let visbleImageViewIndex = button.tag // TODO: either number these 0..<4, or add 1 below
for (index, view) in selectedCheckMarkImageViews.enumerated() {
view.isHidden = visbleImageViewIndex != index
}
发布于 2018-08-22 04:19:25
尝试此
switch (button.tag) {
case _ where button.tag != 1:
default:
//
}
https://stackoverflow.com/questions/51956026
复制相似问题