在Xcode AppleScript项目中捕获复选框切换状态



我已经试着弄清楚这几天了,现在仍然不能理解这是如何工作的。

我在Xcode 13.4.1版本中创建了一个新的AppleScript项目,并添加了一个复选框和一个按钮。我的目标是根据复选框是已勾选还是未勾选来尝试做一些事情。

我对Xcode非常陌生,所以我很可能做错了什么。不显示实际代码的原因是我没有任何工作,所以我问是否有人可以帮助我通过填补缺失的空白来学习这一点。

Xcode Applescript对象的文档对我来说似乎很薄,或者至少这是我发现的。

谢谢

property checkBox : 1 -- bound to the value of the check box & is ticked when run

#START BUTTON
on startButtonClick_(sender)

-- if checkbox is ticked then show alert "ticked"
-- if checkbox is NOT ticked then show alert "NOT ticked"

end startButtonClick_

有人建议包含真实的代码会更有用,我同意,所以这里是我最近的尝试。

property checkBox : missing value -- bound to the value of the check box

#START BUTTON
on startButtonClick_(sender)

set checkBox to (checkBox as boolean) -- toggle

if checkBox is 1 then display alert "Ticked"

log checkBox

end startButtonClick_

警报从未显示,但是当我按下按钮

时,当复选框被选中时,日志输出显示1,当它未被选中时显示0

这里有两个问题,具体取决于您要做什么。


如果您试图连接复选框动作,以便在单击复选框时调用处理程序,请遵循以下步骤:

  1. 在您的脚本中创建一个处理程序(在您的示例中,是startButtonClick_(sender)处理程序)

  2. 打开xib文件,选择左侧的First Responder对象

  3. 转到检查器区域的属性窗格。你会看到框标记为"用户定义",所以点击"+"按钮添加一个新的用户自定义动作

    • 使用带有冒号的处理程序名称,而不是下划线,例如:startButtonClick:
    • 设置'type'为NSButton(或者我想你可以使用默认的'id')
  4. 选择的文件的所有者对象IB,检查员去连接,并确保AppDlegate连接文件所有者委托。

    • 应该是,但是我在测试中遇到了这个问题,所以…
  5. 在IB中选择相关按钮

  6. 转到连接检查器,从发送动作区域control-drag到First Responder,选择您自定义的动作(现在应该出现在弹出菜单中)

现在,当你运行应用程序并单击复选框时,它将以对复选框的引用作为参数运行处理程序。您可以使用sender's state()查询该按钮的当前值。


如果您想要一个静态的、全局的按钮引用,以便您可以在脚本中的任何地方检查它的状态,那么您可能会遇到问题。在Xcode 12和更早的版本中,脚本属性会作为出口出现在AppDelegate弹出菜单中,这样你就可以图形化地连接GUI元素。Xcode 13有一个尚未解决的错误,这使得这是不可能的,但你可以通过直接编辑xib xml在一定程度上解决它。我在这篇文章中详细介绍了如何做到这一点。

希望对你有帮助。

相关内容

  • 没有找到相关文章

最新更新