5

我在 Xcode 的 Interface Builder 中,创建一个 Cocoa-Applescript 自定义 Automator Action。我在界面中有一个 Button 和一个 ComboBox 菜单。当用户单击按钮时,我想填充组合框菜单的内容值。我创建了

on buttonSentAction_(sender)
    -- set popupMenuContentValues of my parameters() to aList as list
    my popupMenu's addItemsWithObjectValues_(aList)
end buttonSentAction_

applescript 文件中的处理程序,但是当我 ctrl 从按钮拖动到文件的所有者时,文件的所有者没有突出显示让我放弃连接。我期望它放下并让我选择 buttonSentAction_ 处理程序来接收发送的操作。如果我右键单击 File's Owner,我在 Applescript 控制器文件中创建的接收到的操作处理程序不会显示出来。(注意,我仍然不确定在该处理程序中填充 ComboBox 菜单的正确行。) 将组合框链接到文件所有者的屏幕截图

我可以在 macosxautomation.com 的“FM to Named Text Boxes”示例 Automator Action 项目中看到,在 IB 中有一个按钮,您可以在 Bindings Inspector 中看到该按钮的发送操作实际上已连接到文件的所有者,并且applescript 文件具有匹配的处理程序。另外,文件所有者的控制器默认设置为applescript文件。显然,我错过了一些关于在 Automator Action Project 中连接发送动作的具体内容。有什么帮助吗?

4

3 回答 3

1

更新:我让它工作。关键是您必须先为对象创建一个 Outlet,然后才能绑定到 Sent Action Handler。

我删除了按钮并重新开始,使用了新的命名方案。这一次,File's Owner 收到了拖动,所有与发送的动作相关的东西都按预期工作。我做的事情和以前完全一样,所以为什么第一个动作处理程序无法在 IB 中接收 Sent Action 是个谜。

下面的示例代码:

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

IB中的绑定检查器

于 2014-05-26T15:56:02.743 回答
0

也许这会对你有所帮助。

我知道由于某种原因,通过控制+拖动到文件所有者不起作用,但您可以通过绑定检查器连接到文件所有者。

这不完全是您正在做的事情,因为您想将信息发送到处理程序,但我认为诀窍是使用参数对象。您必须创建一个键来保存该值,并使用 AppleScript 访问它,get |keyname| of my parameters() as integer例如使用 , (或字符串,列表)。请参阅运行命令处理程序的结构

下面我提供了一个示例,说明如何将属性连接到弹出按钮。

看图片: 在此处输入图像描述 在此处输入图像描述

于 2014-05-26T12:49:43.887 回答
-1

我还没有使用 Automator 项目将操作连接到 Interface Builder 中的自定义对象:

  • 将现有对象设置为instantiateWithOwner:topLevelObjects:. 然后在 Nib 文件中相应地设置类。

  • 通过将 NSObject 拖动到 Nib 来实例化一个新的自定义对象,它将显示在屏幕截图中的“参数”对象下方。然后将它的类设置为您希望 IB 实例化的任何对象。您还应该使用 Outlet 保留此对象。

于 2014-05-26T02:13:09.220 回答