Подкласс UIButton дает мне ошибки - PullRequest
0 голосов
/ 27 февраля 2019

Когда я запускаю приложение и нажимаю кнопки, это вызывает сбой "Тема 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 и перетаскивание на выход). Сначала я объявил «многие кнопки» как UIButton, чтобы я мог соединить их со своей раскадровкой. Затем позже я изменил тип данных на MyButton. Я думаю, что я сделал то же самое с IBAction

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Выберите «MyButton» в качестве пользовательского класса в инспекторе идентичности

0 голосов
/ 27 февраля 2019

Вам нужно

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){, затем повторите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...