NSAlert按钮无法识别的选择器发送到实例

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

我有一个类,其中大部分逻辑都是针对点击等处理的。在那里,我创建了一个函数,在另一个类中调用另一个函数。我想把这个功能与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
}
}
}

即使我没有通过dispatchQueue,也不会触发操作。我想知道为什么在这两种情况下都不起作用。

swift macos cocoa
2个回答
1
投票

问题是,这不是你使用NSAlert按钮的方式。不要为按钮设置任何操作。该按钮将关闭警报,此时您可以查看单击的按钮并做出相应的响应。你可以通过捕获runModal的结果来做到这一点,这是你的代码忽略的结果。当然,如果此警报只有一个按钮,则无需检查任何内容;只需在下一行打电话给goBack


0
投票

可能是从类OtherClass调用函数“goBack”,试图从OtherClass中获取一些未创建为对象的属性吗?

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