无法为自定义按钮设置设置图像
Can not set set image for custom button
我要像这样实现一个复选框:
通过
class CheckBox: UIButton {
let checkedImage = UIImage(named: "checked")
let uncheckedImage = UIImage(named: "unchecked")
var checked : Bool = false{
didSet{
if checked == false{
self.setImage(uncheckedImage, forState: .Normal)
}else {
self.setImage(checkedImage, forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: "buttonClicked:", forControlEvents: .TouchUpInside)
checked = false
}
func buttonClicked(sender: UIButton){
if (sender == self){
checked = !checked
}
}
}
但我得到的是:
你能解释一下发生了什么吗?
在 didSet
语句的末尾调用 self.setNeedsLayout()
。
如果您更改任何子视图,您需要要求它更新它的布局和子视图。让我知道是否有帮助。
我试过你的代码,它工作正常我只改变了这部分 self.addTarget... 到:
self.addTarget(self, action: #selector(CheckBox.buttonClicked(_:)), forControlEvents: .TouchUpInside)
并在创建按钮时将其 class 更改为:CheckBox
我要像这样实现一个复选框:
class CheckBox: UIButton {
let checkedImage = UIImage(named: "checked")
let uncheckedImage = UIImage(named: "unchecked")
var checked : Bool = false{
didSet{
if checked == false{
self.setImage(uncheckedImage, forState: .Normal)
}else {
self.setImage(checkedImage, forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: "buttonClicked:", forControlEvents: .TouchUpInside)
checked = false
}
func buttonClicked(sender: UIButton){
if (sender == self){
checked = !checked
}
}
}
但我得到的是:
你能解释一下发生了什么吗?
在 didSet
语句的末尾调用 self.setNeedsLayout()
。
如果您更改任何子视图,您需要要求它更新它的布局和子视图。让我知道是否有帮助。
我试过你的代码,它工作正常我只改变了这部分 self.addTarget... 到:
self.addTarget(self, action: #selector(CheckBox.buttonClicked(_:)), forControlEvents: .TouchUpInside)
并在创建按钮时将其 class 更改为:CheckBox