子类化UIButton给我错误

时间:2019-02-27 20:42:53

标签: swift uibutton

当我运行应用程序和按钮时,它导致崩溃“线程1:EXC_BAD_ACCESS(code = 2,address = 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也做过

2 个答案:

答案 0 :(得分:3)

您需要

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){,然后重新运行

答案 1 :(得分:-2)

在身份检查器中选择“ MyButton”作为自定义类