我将UIButton
子类化为CheckBox
...下面的代码似乎在故事板上工作(根据在线教程)但是当我尝试通过代码添加它时它不起作用。 ..
class CheckBox: UIButton {
// Images
let checkedImage = UIImage(named: "Checked.png")! as UIImage
let uncheckedImage = UIImage(named: "Unchecked.png")! as UIImage
// Bool property
var isChecked: Bool = false {
didSet{
if isChecked == true {
self.setImage(checkedImage, forState: .Normal)
} else {
self.setImage(uncheckedImage, forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: #selector(CheckBox.buttonClicked(_:)), forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonClicked(sender: UIButton) {
if sender == self {
isChecked = !isChecked
}
}
}
以下是我在ViewController
上添加CheckBox的代码:
let checkbox = CheckBox(frame: CGRect(x: 5, y: 5, width: 40, height: 40))
print(checkbox.isChecked)
view.addSubview(checkbox)
问题是CheckBox
没有显示。如果我给它一个背景,在帧初始化下然后我可以看到正方形,但是当我点击它时没有任何反应..甚至在buttonClicked
方法中添加打印消息之后。
我在awakeFromNib方法中添加了print语句,但从未调用过它......
答案 0 :(得分:0)
固定.. AwakeFromNib显然永远不会在没有Storyboard的情况下被调用,所以我必须实现一个便利初始化器。