【问题标题】:swift - customised button that terminate when pressedswift - 按下时终止的自定义按钮
【发布时间】:2015-02-16 15:39:05
【问题描述】:

我正在尝试创建一个自定义的 UIButton。此自定义按钮显示一个未选中的框,当用户按下该按钮时,该框将变为选中的框。当用户按下复选框时,它将返回到未选中状态。

我有一个运行时错误。调试器显示它由于 NSException 类型的未捕获异常而终止。

哪里出错了?

复选框代码

import UIKit

class CheckBox: UIButton {

    //Images
    let checkedImage = UIImage(named: "checked")
    let unCheckedImage = UIImage(named: "unchecked")

    //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
            }
        }
    }
}

【问题讨论】:

  • 你为什么要这么做?您可以使用按钮的选定属性(也是布尔值)并为选定状态设置图像,然后单击更改选定状态
  • 我该怎么做?你有什么参考资料给我吗?
  • 查看下面的答案
  • 你的编译器怎么不会对var ischecked:Bool = false{大喊大叫?你是在尝试if let吗?

标签: xcode swift uibutton


【解决方案1】:

如果要使用 selected 属性,则可以执行以下操作:

class CheckBox: UIButton {

//Images
let checkedImage = UIImage(named: "checked")
let unCheckedImage = UIImage(named: "unchecked")

    //bool property
    override func awakeFromNib() {
        self.addTarget(self, action: "buttonClicked", forControlEvents: UIControlEvents.TouchUpInside)

        self.setImage (checkedImage, forState: .Selected)

        self.setImage(unCheckedImage, forState: .Normal)
    }

    func buttonClicked(sender:UIButton) {
        if(sender == self) {

            self.selected = !self.selected
        }
    }
}

【讨论】:

  • 模拟器崩溃了。错误:“以 NSException 类型的未捕获异常终止
猜你喜欢
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 2011-05-13
  • 2011-06-14
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多