首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在switch语句中使用!=?

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

Stack Overflow用户
提问于 2018-08-22 04:10:53
回答 2查看 87关注 0票数 0

目前我们有一个有5个按钮的单元格,当一个按钮被按下时,它会变成白色,而所有其他按钮都会变成黑色。按钮上有一个单独的复选标记图像视图,该复选标记图像视图将被选中或取消选中,具体取决于按钮是否被选中。因此,下面的代码适用于imageView:

代码语言:javascript
复制
 @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
}

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

代码语言:javascript
复制
 button.setImage(UIImage(named: "LR - Nano White - Selected")!, for: .normal) = button.tag != 1

出现错误:

无法赋值:函数调用返回不可变值

我尝试将其放在switch语句中,如下所示:

代码语言:javascript
复制
  switch (button.tag) {

        case != 1: //error occurs here


        default:
           //
        }

但得到的错误是:

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

有没有办法解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2018-08-22 04:18:50

开关是对1个值的替换,将其与多个值的固定集进行比较,以选择要执行的单个分支。您会遇到这样一种情况:根据多个不同的值检查多个值,并进行多个不同的响应。单个交换机不能真正取代这一点。

相反,我建议使用for循环来减少重复。

代码语言:javascript
复制
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
}
票数 2
EN

Stack Overflow用户

发布于 2018-08-22 04:19:25

尝试此

代码语言:javascript
复制
switch (button.tag) {

        case _ where button.tag != 1: 


        default:
           //
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51956026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档