之前我问过这个问题的一个版本,但我没有提到UIButton
UITableVlewCell
个UITableViewCell
复选框。有人告诉我从UIButton
而不是NSUserDefaults
继承这个。这是一个待办事项列表应用程序,所以我在原型单元格中进行此操作。目前,我可以运行应用程序,但不能使用"..Outlets cannot be connected to repeating content."
保存复选框的状态。我已经关注了YouTube的教程,甚至将文件与其一起下载并将它们从Objective-C转换为Swift。当我试图将所有代码放在没有子类的View Controller中时,我得到了错误消息viewDidLoad()
在子类中,我能够运行应用程序,但没有任何保存。我也不确定在我的override func viewDidLoad() {
super.viewDidLoad()
// NSUserDefaults
checked = defaults.boolForKey("boxIsChecked")
}
方法中还能调用什么。
我的代码如下:
class TableViewCell: UITableViewCell {
var defaults = NSUserDefaults.standardUserDefaults()
let isSelected = UIImage(named: "Selected")
let unselected = UIImage(named: "Unselected")
@IBOutlet weak var checkBoxButton: UIButton!
@IBAction func checkBox(sender: UIButton) {
if (!checked) {
checked = true
checkBoxButton.setImage(isSelected, forState: UIControlState.Normal)
defaults.setBool(checked, forKey: "boxIsChecked")
}
else if (checked) {
checked = false
checkBoxButton.setImage(unselected, forState: UIControlState.Normal)
defaults.setBool(checked, forKey: "boxIsChecked")
}
}
func checkTheBox() {
if (!checked) {
checkBoxButton.setImage(unselected, forState: UIControlState.Normal)
}
else if (checked) {
checkBoxButton.setImage(isSelected, forState: UIControlState.Normal)
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
我的子类:
var checked: Bool = true
注意:var checked: Bool
是我第一个View Controller中的全局变量。我不确定是否需要将其初始化为TableViewCell().checkTheBox()
。我试过并收到很多错误消息。谢谢你的帮助。
另外::当我向viewDidLoad()
方法添加EXC_BAD_INSTRUCTION
时,我会在else if
方法的checkTheBox
下的语句中获得{{1}}。< / p>