子类化UIButton给我错误

问题描述 投票:-5回答:2

当我运行应用程序和按钮时,它会导致崩溃“线程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一样

swift uibutton
2个回答
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){然后重新运行


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.