Кнопка NSAlert нераспознанный селектор отправлен на экземпляр - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть класс, где большая часть логики обрабатывается для кликов и тому подобное. Там я сделал функцию, которая вызывает другую функцию в другом классе. Я хочу связать эту функцию нажатием кнопки NSAlert. Однако, когда я нажимаю, я получаю сообщение об ошибке: нераспознанный селектор отправляется на экземпляр 0x6000001c50a0. У меня также есть проверка, открыто ли оповещение, и проходят ли все оповещения аналогичным образом.

Вот мой код:

func goBack()
{
//goback code
}


func showAlert(){
if (!OtherClass.alertCheck)
{
OtherClass.alertCheck = true;
DispatchQueue.main.async(){
var alert = NSAlert()
alert.messageText = "If you want to go back, click back."
var btn = alert.addButton("back")
btn.action = #selector(OtherClass.goBack)
alert.runModal()
OtherClass.alertCheck = false
}
}
}

Даже если я не пройду через диспетчерскую очередь, действие не будет запущено. Я хотел бы знать, почему в обоих случаях это не работает.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Проблема в том, что вы не используете кнопки NSAlert. Не устанавливайте никаких действий для кнопки. Кнопка закроет предупреждение, и в этот момент вы можете посмотреть, какая кнопка была нажата, и ответить соответствующим образом. Вы делаете это, захватывая результат runModal, результат, который ваш код игнорирует. Конечно, если в этом предупреждении есть только одна кнопка, нет необходимости что-либо изучать; просто позвоните goBack в следующей строке.

0 голосов
/ 06 сентября 2018

Может быть, функция "goBack" вызывается из класса OtherClass, который пытается получить некоторые свойства из OtherClass, которые еще не созданы как объект?

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