首先,我假定这是AppleScriptObjC
,而不是老AppleScript Studio
。
首先,你需要做的AppleScript相当于一个IBOutlet
,这是一个实例变量(或属性)的引用文本字段,并允许Objective-C代码(或AppleScript的)与之通信。在窗口从笔尖文件文本字段脚本实例
script MDAppDelegate
property parent : class "NSObject"
property hostNameTextField : missing value -- add this line
你会再想要控制拖动到“:对你的AppleScript脚本的顶部,添加一行以下连接“这个插座。
[更新]:从您收到的错误消息中,听起来您没有在nib文件中正确设置此hostNameTextField
连接。
MDAppDelegate
下图中显示的nib文件中的蓝色立方体图标表示将在加载该nib文件时在运行时创建的AppleScript脚本实例。您可能已经将您的按钮与“AppleScript”多维数据集的“连接”正确连接起来,该连接指定当您单击该按钮时,它应该调用ButtonHandlerVolumeSetting0_()
函数(又名AppleScript处理程序)。您现在需要选择蓝色AppleScript多维数据集实例,如下图所示,然后右键单击(或按住Control键并单击),然后从蓝色多维数据集拖到您输入的文本字段中,如我所示。
当你让了鼠标按钮,它应该显示有可能性质的黑色弹出面板,您可以“挂钩”的文本字段。选择hostNameTextField
。
之后,当您选择蓝色的AppleScript立方体,在右实用区域的连接检查,你可以看到AppleScript脚本的连接。在Outlets
下,您会看到hostNameTextField
插座,在Received Actions
下,您会看到ButtonHandlerVolumeSetting0_()
。
虽然hostNameTextField
属性被设置为的missing value
初始值在AppleScript的,(所述的AppleScript等效Objective-C的nil
的),通过使在笔尖文件这方面,在运行时,的hostNameTextField
的值将被设定到您指定的NSTextField
。这将允许脚本和归档到nib文件中的对象层次结构之间的通信。
[UPDATE OF END]
NSTextField
一个继承名为从其超NSControl
stringValue
方法。此方法返回文本字段的内容,如NSString
(相当于AppleScript string
)。所以,按一下按钮处理程序中,你可以得到的字符串值,如下所示:
on ButtonHandlerVolumeSetting0_(sender)
set hostName to hostNameTextField's stringValue()
do shell script ("/usr/sbin/scutil --set HostName " & hostName) with administrator privileges
end ButtonHandlerVolumeSetting0_
当使用do shell script
,它通常是最好从脚本本身忽略的sudo
任何包容和对with administrator privileges
预选赛,而不是策略。这意味着AppleScript需要使用提升的权限运行脚本,并且它将处理显示标准身份验证对话框。
我已经做了大量的研究。我不只是想在这里freeload :) – user1582375