【发布时间】:2015-07-05 01:29:26
【问题描述】:
我是 Swift 新手,对如何以编程方式将自定义类添加到按钮感到困惑。我创建了一个自定义类,可以使用情节提要添加它。它工作正常,但如何以编程方式完成?
我可以使用 CheckBox 类代替 UIButton 还是仍然需要使用 UIButton 并添加类?
班级
class CheckBox: UIButton {
//images
let checkedImage = UIImage(named: "checked_checkbox") //as UIImage!
let uncheckedImage = UIImage(named: "unchecked_checkbox") //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: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonClicked(sender:UIButton) {
if(sender == self){
if isChecked == true {
println("setting to false")
isChecked = false
}else{
println("setting to true")
isChecked = true
}
}
}
}
将类添加到视图控制器
override func viewDidLoad() {
super.viewDidLoad()
let checkBox = CheckBox()
checkBox.backgroundColor = UIColor.blueColor()
self.view.addSubview(checkBox)
checkBox.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addConstraint(NSLayoutConstraint(item: checkBox, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1.0, constant: 50))
self.view.addConstraint(NSLayoutConstraint(item: checkBox, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1.0, constant: 50))
}
【问题讨论】:
-
您可以在代码中使用 Checkbox 类代替 UIButton
-
@TienDinh 谢谢!我的问题一定是我的班级或者我将 Checkbox 类添加到视图控制器的方式。我更新了问题以包括 viewDidLoad 和类。我是否遗漏了如何以编程方式添加 UIButton 与在情节提要中添加 UIButton 的区别?
-
“我的问题一定是我的班级或者我将 Checkbox 类添加到视图控制器的方式”但是@Oakland510,你还没有解释你的问题是什么!复选框没有出现在界面中吗?有什么问题会发生或没有发生?
-
@matt 复选框没有出现。如果我调用 checkbox.isCheck = true 或 false 复选框会出现,但如果单击则不会更改。如果我通过情节提要添加按钮并将自定义类设置为 CheckBox,则会出现复选框并在单击时更改。
-
@matt 即使使用 checkBox.frame = CGRectMake(30, 30, 100, 100) 我仍然一无所获。如果我设置 checkBox.backgroundColor = UIColor.blueColor() 我至少可以让一个蓝色框出现,这是正确的大小。但是它仍然不是我期望的复选框。