gpt4 book ai didi

ios - 如何以编程方式快速添加自定义 UIButton

转载 作者:行者123 更新时间:2023-11-28 08:47:32 24 4
gpt4 key购买 nike

我能够创建自定义复选框按钮类。但是,当我尝试将按钮放在我的 View 中时,我没有得到图像。设置背景颜色只会返回该大小的正方形。这是我添加框的代码:

     let box:CheckBox = CheckBox()
box.frame = CGRectMake(screenSize.width/2, screenSize.height/2, 200, 200)
self.view.addSubview(box)

I created the class as follows:

class CheckBox: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
//other stuff
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// Images
let checkedImage = UIImage(named: "checked_checkbox")
let uncheckedImage = UIImage(named: "checkbox_unchecked_icon")

// 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: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}

func buttonClicked(sender: UIButton) {
if sender == self {
if isChecked == true {
isChecked = false
} else {
isChecked = true
}
}
}
}

最佳答案

将您的 awakeFromNib 代码移动到您的 init() 中。awakeFromNib 仅在您从 nib/xib 文件初始化时调用。

这永远不会被调用。您可以通过设置断点来对此进行测试。

它应该是这样的:

override init(frame: CGRect) {
super.init(frame: frame)
self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}

这样,self.isChecked 被调用,图像被设置,您将看到的不仅仅是一个灰色框。

关于ios - 如何以编程方式快速添加自定义 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com