如何解决这个问题?我是一个新的程序员。谢谢
我收到以下错误:
"无法分配给类型为'Bool'的不可变表达式">
当我尝试将"isSelected"设置为false
并true
@IBAction func onFilter(_ sender: Any) {
if ((sender as AnyObject).isSelected == true) {
hideSecondaryMenu()
(sender as AnyObject).isSelected = false
} else {
showSecondaryMenu()
(sender as AnyObject).isSelected = true
}
}
您收到此错误是因为当您将sender转换为AnyObject
时,您将获得immutable
类型对象,因此您无法更新其属性,解决问题的最佳选择是将发件人声明从Any
更改为实际UIControl
这意味着如果它是按钮则UIButton
。
@IBAction func onFilter(_ sender: UIButton) {
hideSecondaryMenu()
sender.isSelected = !sender.isSelected
}
如果您仍想使用Any
则将发件人转换为它所属的实际UIControl
。
@IBAction func onFilter(_ sender: Any) {
if sender is UIButton {
let btn = sender as! UIButton
hideSecondaryMenu()
btn.isSelected = !btn.isSelected
}
}