不能得到这个checkbox来build立?

在这里输入图像说明

我试图解决其他错误,所以它可能看起来有点不同,但这是我能做的最好的。

override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() Box49.setImage(#imageLiteral(resourceName: "UnCheckBox"), for: .normal) Box49.setImage(#imageLiteral(resourceName: "CheckBox"), for: .selected) Box50.setImage(#imageLiteral(resourceName: "UnCheckBox"), for: .normal) Box50.setImage(#imageLiteral(resourceName: "CheckBox"), for: .selected) Box51.setImage(#imageLiteral(resourceName: "UnCheckBox"), for: .normal) Box51.setImage(#imageLiteral(resourceName: "CheckBox"), for: .selected) } @IBAction func Box49(_ sender: UIButton) { sender.isSelected = !(sender as AnyObject).isSelected } @IBAction func Box50(_ sender: UIButton) { sender.isSelected = !(sender as AnyObject).isSelected } @IBAction func Box51(_ sender: UIButton) { sender.isSelected = !(sender as AnyObject).isSelected } 

首先,您需要创build3个button,因为您正在将图像设置为button操作,所以要么在界面构build器中设置所选图像和正常图像,要么像下面那样创build3button出口。

 @IBOutlet var box49: UIButton! @IBOutlet var box50: UIButton! @IBOutlet var box51: UIButton! 

现在将图像设置为Button中的viewDidLoad或viewDidAppear不在AnyObject ,也不需要将发件人转换为AnyObject来访问isSelected属性,因为发件人types是UIButton ,因此您可以直接访问isSelected属性。

 var BoxOFF = #imageLiteral(resourceName: "UnCheckBox") var BoxON = #imageLiteral(resourceName: "CheckBox") override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) box49.setImage(BoxOFF, for: .normal) box49.setImage(BoxON, for: .selected) box50.setImage(BoxOFF, for: .normal) box50.setImage(BoxON, for: .selected) box51.setImage(BoxOFF, for: .normal) box51.setImage(BoxON, for: .selected) } 

现在用这种方法设置你的button动作。

 @IBAction func Box49(_ sender: Button) { sender.isSelected = !sender.isSelected } @IBAction func Box50(_ sender: Button) { sender.isSelected = !sender.isSelected } @IBAction func Box51(_ sender: Button) { sender.isSelected = !sender.isSelected } 
 override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } 

上述方法在内存不足的情况下调用,需要释放资源。

所以你需要从上面的方法代码添加到viewDidAppearviewWillAppear

所以replace下面的代码:

 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) Box49.setImage(#imageLiteral(resourceName: "UnCheckBox"), for: .normal) Box49.setImage(#imageLiteral(resourceName: "CheckBox"), for: .selected) Box50.setImage(#imageLiteral(resourceName: "UnCheckBox"), for: .normal) Box50.setImage(#imageLiteral(resourceName: "CheckBox"), for: .selected) Box51.setImage(#imageLiteral(resourceName: "UnCheckBox"), for: .normal) Box51.setImage(#imageLiteral(resourceName: "CheckBox"), for: .selected) } 

另一个改进就是replace你的代码

 sender.isSelected = !(sender as AnyObject).isSelected 

 sender.isSelected = !sender.isSelected