iOS 9 Swift UIButton CheckBox子类未显示图像

时间:2016-08-04 16:40:47

标签: ios swift uibutton ios9 subclass

我将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语句,但从未调用过它......

1 个答案:

答案 0 :(得分:0)

固定.. AwakeFromNib显然永远不会在没有Storyboard的情况下被调用,所以我必须实现一个便利初始化器。