如何在Xcode中连接按钮的“发送操作”以进行自定义Automator Action项目

6

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

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

在苹果脚本文件中,我尝试从按钮向“文件所有者”进行控制拖动,但是“文件所有者”没有高亮显示以供我放置连接。我期望的是它能够放置并给我选择“buttonSentAction_”处理程序接收发送的操作的选项。如果我右键单击“文件所有者”,则在苹果脚本控制器文件中创建的接收操作处理程序不会显示出来。(请注意,我仍然不确定填充ComboBox菜单的正确行。)
我可以看到在macosxautomation.com的“FM to Named Text Boxes”示例Automator Action项目中,IB中有一个按钮,在绑定检查器中,您可以看到按钮的发送操作实际上已连接到“文件所有者”,并且苹果脚本文件具有该匹配处理程序。此外,“文件所有者”的控制器默认设置为苹果脚本文件。
显然,我错过了有关在Automator Action项目中连接发送操作的特定内容。任何帮助? Screen Grab of linking combobox to File's Owner

在stackoverflow上有一些类似的问题,其中的人无法连接到文件的所有者,但它们不是Automator Action项目。 - jweaks
3个回答

1
更新:我已经让它正常工作了。 关键是在绑定到Sent Action Handler之前,您必须为对象创建一个Outlet。
我删除了按钮并重新开始,使用了新的命名方案。这次,文件所有者接收了拖动,并且所有连接到发送操作的内容都按预期工作。我做的事情与以前完全相同,所以第一个操作处理程序无法在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 1end if
end

Bindings Inspector in IB


1
当然,我刚刚添加了相关的事件处理程序代码,并附上了绑定检查器的屏幕截图。 - jweaks

0

也许这会对你有所帮助。

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

这不完全是您正在做的事情,因为您想要将信息发送到处理程序,但我认为诀窍是使用参数对象。您必须创建一个键来保存该值,并使用AppleScript使用get |keyname| of my parameters() as integer(或string,list)进行访问,例如。请参见{{link1:on run命令处理程序的结构}}。

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

请参见图片: enter image description here enter image description here


您正在描述如何设置绑定,这一点我没有问题。我的问题是如何将文件的所有者连接到已发送的操作,这与像您演示的绑定值不同。 - jweaks
@jweaks 我明白你的意思。我也很想找出这个问题的答案。我会进行一些实验。 - Jonathan Komar
我刚刚又重新走了一遍所有步骤,这次成功了。真是个大谜团。 - jweaks

-1

我没有使用Automator项目与Interface Builder中的自定义对象连接操作的经验,你可以通过以下两种方式实现:

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

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


感谢您的努力,但我认为这个答案对于一个Applescript Automator动作项目来说没有意义。文件所有者应该指向所有者文件的实例。 - jweaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接