我在Xcode的Interface Builder中创建了一个Cocoa-Applescript自定义Automator Action。我在界面中有一个Button和一个ComboBox菜单。我想在用户点击按钮时填写ComboBox菜单的内容值。 我已经创建了
on buttonSentAction_(sender)
-- set popupMenuContentValues of my parameters() to aList as list
my popupMenu's addItemsWithObjectValues_(aList)
end buttonSentAction_
在applescript文件中的处理程序,但是当我从按钮拖动到文件所有者时,文件所有者不会突出显示我放弃连接。我期待的是它放弃并让我选择buttonSentAction_处理程序来接收发送的动作。如果我右键单击文件所有者,则我在Applescript控制器文件中创建的已接收操作处理程序不会显示。 (注意,我仍然不确定在该处理程序中填充ComboBox菜单的正确行。)
我可以在" FM中看到命名文本框"在macosxautomation.com上的示例Automator Action项目在IB中有一个按钮,您可以在Bindings Inspector中看到按钮的发送操作实际上已连接到文件的所有者,而且applescript文件具有匹配处理程序。另外,我默认将File&#39的所有者的控制器设置为applescript文件。 显然,我遗漏了一些关于在Automator Action Project中挂起已发送动作的具体内容。有帮助吗?
答案 0 :(得分:1)
更新:我开始工作了。 关键是你必须先为对象创建一个Outlet,然后才能绑定到Sent Action Handler。
我删除了按钮并重新开始,使用了新的命名方案。这一次,文件所有者收到了拖动,并且所有内容都与发送的操作相关联,并且按预期工作。我完全按照以前的方式做事,所以第一个动作处理程序无法在IB中接收已发送的动作,这是一个谜。
以下示例代码:
on searchTypeMatrixWasClicked_(sender)
-- called with the matrix sent action
set theIndex to (actionTypeIndex of my parameters()) as integer
if theIndex is 0 then
-- do stuff, etc.
else if theIndex is 1 …
end if
end
答案 1 :(得分:0)
也许这会对你有帮助。
我知道由于某种原因,它无法通过控制+拖动到文件所有者,但您可以通过转到绑定检查器连接到文件所有者。
这不完全是你正在做的事情,因为你想将信息发送给处理程序,但我认为诀窍是使用参数对象。您必须创建一个用于保存值的键,并使用例如使用get |keyname| of my parameters() as integer
(或字符串,列表)的AppleScript访问它。见The Structure of the on run Command Handler。
下面我提供了一个如何将属性连接到弹出按钮的示例。
查看图片:
答案 2 :(得分:-1)
我没有使用Automator项目将操作连接到Interface Builder中的自定义对象:
在instantiateWithOwner:topLevelObjects:
中将现有对象设置为所有者。然后在Nib文件中相应地设置类。
通过将NSObject拖动到Nib来实例化新的自定义对象,它将显示在屏幕截图中的“Parameters”对象下方。然后将它的类设置为您希望IB实例化的任何对象。您还应该使用Outlet保留此对象。