自定义UITableView子类中的UIButton(复选框) - Swift

时间:2015-02-20 01:51:04

标签: ios uitableview swift uibutton nsuserdefaults

之前我问过这个问题的一个版本,但我没有提到UIButton UITableVlewCellUITableViewCell复选框。有人告诉我从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>

0 个答案:

没有答案