Ios 如何使用!=在switch语句中?
目前我们有一个有5个按钮的单元格,当按下一个按钮时,它将变为白色,而所有其他按钮将变为黑色。按钮上有一个单独的复选标记imageview,将根据是否选中该按钮进行选中或取消选中。因此,这适用于imageView:Ios 如何使用!=在switch语句中?,ios,swift,uibutton,switch-statement,Ios,Swift,Uibutton,Switch Statement,目前我们有一个有5个按钮的单元格,当按下一个按钮时,它将变为白色,而所有其他按钮将变为黑色。按钮上有一个单独的复选标记imageview,将根据是否选中该按钮进行选中或取消选中。因此,这适用于imageView: @IBAction func changeColor(_ sender: Any) { guard let button = sender as? UIButton else { return } self.s
@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:
//
}
但是得到错误:
“!=”不是前缀一元运算符
有没有办法解决这个问题?一个开关可以代替一个值,将其与一组固定的多个值和其他值进行比较,以选择执行的单个分支。您会遇到这样一种情况,即多个值与多个不同的值进行检查,并执行多个不同的操作作为响应。一个开关并不能真正取代它 相反,我建议使用
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
}
让SelectedCheckMarkImageView=[
选择CheckMarkImageView1,
选择CheckMarkImageView2,
选择CheckMarkImageView3,
选择CheckMarkImageView4,
选择CheckMarkImageView5,
]
让visbleImageViewIndex=button.tag//TODO:这些0中的任意一个数字。一个开关是一个值的替代值,该值与多个固定值集和其他值进行比较,以选择执行的单个分支。您会遇到这样一种情况,即多个值与多个不同的值进行检查,并执行多个不同的操作作为响应。一个开关并不能真正取代它
相反,我建议使用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
}
让SelectedCheckMarkImageView=[
选择CheckMarkImageView1,
选择CheckMarkImageView2,
选择CheckMarkImageView3,
选择CheckMarkImageView4,
选择CheckMarkImageView5,
]
让visbleImageViewIndex=button.tag//TODO:为这些0进行编号。试试这个
switch (button.tag) {
case _ where button.tag != 1:
default:
//
}
试试这个
switch (button.tag) {
case _ where button.tag != 1:
default:
//
}
案例应该有一个Int
,因为标签是Int
?删除=
只需检查匹配的情况,例如情况1:
您应该重新制作@IBOutlet
,只需选择ui按钮的参数类型,而不是任何
。这样,就不需要强制转换(强制或条件转换)。case应该有一个Int
,因为标记是Int
?删除=
只需检查匹配的情况,例如情况1:
您应该重新制作@IBOutlet
,只需选择ui按钮的参数类型,而不是任何
。这样,就不需要强制施法(强制施法或有条件施法)。我正试图找到一种解释这一点的方法!鼓掌clap@Alexander这对隐藏/取消隐藏ImageView非常有效,但我尝试使用相同的方法将按钮的背景图像更改为“已选定”、“未选定”concept@SwiftyJD所以有什么问题吗?只需在此基础上展开:让isSelected=visbleImageViewIndex==index;view.ishiden=!当选;view.backgroundImage=isSelected?selectedImage:deselectedImage
@Alexander我想我没有正确解释我要做的事情。我正在尝试使用唯一选定图像数组和唯一未选定图像数组更改按钮(例如button.setImage(unselectedImage,for:.normal))。当点击一个按钮时,它应根据索引在按钮上显示该特定的选定图像,所有其他按钮将自动显示未选定的图像。您提供的代码可以很好地与ImageView配合使用,但这有点不同,因为它的作用类似于:button.setImage(unselectedImage,for:.normal)@SwiftyJD您只需要为每个按钮设置一次图像,每个UIControl。说明您关心的。为什么每次按下按钮你都要改变它们?我在想办法解释这一点!鼓掌clap@Alexander这对隐藏/取消隐藏ImageView非常有效,但我尝试使用相同的方法将按钮的背景图像更改为“已选定”、“未选定”concept@SwiftyJD所以有什么问题吗?只需在此基础上展开:让isSelected=visbleImageViewIndex==index;view.ishiden=!当选;view.backgroundImage=isSelected?selectedImage:deselectedImage
@Alexander我想我没有正确解释我要做的事情。我正在尝试使用唯一选定图像数组和唯一未选定图像数组更改按钮(例如button.setImage(unselectedImage,for:.normal))。当点击一个按钮时,它应根据索引在按钮上显示该特定的选定图像,所有其他按钮将自动显示未选定的图像。您提供的代码可以很好地与ImageView配合使用,但这有点不同,因为它的作用类似于:button.setImage(unselectedImage,for:.normal)@SwiftyJD您只需要为每个按钮设置一次图像,每个UIControl。说明您关心的。为什么每次按下按钮都要更改它们?我尝试过,但得到一个错误案例uButton.tag!=1:self.selectedCheckMarkImageView1.isHidden//Expression解析为未使用的l-value@SwiftyJDself.selectedCheckMarkImageView1.isHidden-->isHidden是只读属性,您不使用它,因此error@SwiftyJDswitch case中出现了什么错误?@SwiftyJD您可以分享您的switch语句代码吗?switch button.tag{case{where button.tag!=1:self.selectedCheckMarkImageView1.isHidden case}where button.tag!=2:self.selectedCheckMarkImageView2.isHidden}我尝试过,但得到一个错误案例uButton.tag!=1:self.selectedCheckMarkImageView1.isHidden//Expression解析为未使用的l-value@SwiftyJDself.selectedCheckMarkImageView1.isHidden--