如何在switch语句中使用!=?

时间:2018-08-21 20:10:53

标签: ios swift uibutton switch-statement

当前我们有一个包含5个按钮的单元格,当按下一个按钮时,它将变为白色,而所有其他按钮将变为黑色。按钮上有一个单独的选中标记图像视图,该视图将被选中还是不选中,这取决于是否选择了按钮。太胖了,适用于imageView:

undefined

但是当尝试使用相同的方法来更改按钮图像时:

 @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
}

发生错误:

  

无法分配值:函数调用返回不可变的值

我尝试将其放在这样的switch语句中:

 button.setImage(UIImage(named: "LR - Nano White - Selected")!, for: .normal) = button.tag != 1

但出现错误:

  

'!='不是前缀一元运算符

关于如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:2)

一个开关是一个值的替代,该值与多个值的其他值的固定集进行比较,以选择要执行的单个分支。在这种情况下,您需要针对多个不同的值检查多个值,并做出多种不同的响应。单个开关并不能真正取代它。

相反,我建议使用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
}

答案 1 :(得分:1)

尝试

switch (button.tag) {

        case _ where button.tag != 1: 


        default:
           //
        }