当我运行应用程序和按钮时,它会导致崩溃“线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x108656e70)
class MyButton: UIButton{
var myValue: Bool
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
myValue = true
super.init(coder: aDecoder)
}
}
class MyViewController: UIViewController{
//changed datatype from UIButton
@IBOutlet var manyButtons: [MyButton]!
@IBAction func buttonPressed(_ sender: MyButton){
//Error here "Thread 1: EXC_BAD_ACCESS(code=2, address=0x108656e70)"
print(sender.myValue)
}
}
顺便说一下,我注意到我无法像往常一样从故事板连接按钮(cntrl和拖动到插座)。我首先将“manyButtons”声明为UIButton,以便能够从我的故事板中连接它们。然后我将数据类型更改为MyButton。我相信我和IBAction一样
你需要
class MyButton: UIButton{
var myValue = true
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
这条线
fatalError("init(coder:) has not been implemented")
可以导致未知的崩溃,所以这不是它的位置,因为当从IB加载按钮时,确定你不想导致崩溃方法required init?(coder aDecoder: NSCoder)
被调用
这里的错误异常意味着该操作无法将IB中的按钮强制转换为发送者当前类型,这意味着您错误地设置了类名
@IBAction func buttonPressed(_ sender: MyButton){
并验证将(_ sender: MyButton){
更改为(_ sender: UIButton){
然后重新运行
在身份检查器中选择“MyButton”作为自定义类