【问题标题】:xcode4 obtaining value of textboxxcode4获取文本框的值
【发布时间】:2012-11-18 06:09:48
【问题描述】:

我正在 xcode 4 中创建一个 applescript 应用程序,并寻求一些指导。我已经做了大量的阅读和搜索互联网,但找不到我正在寻找的答案。我有一个带有文本框和按钮的主窗口。我希望能够用 hostname123 替换文本框中的文本,以便命令是:执行 shell 脚本“sudo scutil --set HostName”和 [文本框的值]。我设置了按钮事件,以便在单击时执行命令。有人可以协助获取文本框的值以便在命令中使用它吗?

on ButtonHandlerVolumeSetting0_(sender)
    do shell script "sudo scutil --set HostName hostname123" 
end ButtonHandlerVolumeSetting0_

【问题讨论】:

  • 我做了很多研究。我不只是想在这里免费下载:)

标签: objective-c xcode cocoa xcode4 applescript


【解决方案1】:

首先,我假设这是在AppleScriptObjC,而不是旧的AppleScript Studio

首先,您需要使 AppleScript 等效于 IBOutlet,它是引用文本字段并允许 Objective-C 代码(或 AppleScript)与之通信的实例变量(或属性)。在 AppleScript 脚本的顶部,添加如下一行:

script MDAppDelegate
    property parent : class "NSObject"

    property hostNameTextField : missing value -- add this line

然后,您需要按住 Control 键从 nib 文件中的脚本实例拖动到窗口中的文本字段以“连接”此插座。

[更新]:从您收到的错误消息来看,您似乎没有在 nib 文件中正确设置此 hostNameTextField 连接。

下图中显示的 nib 文件中的MDAppDelegate 蓝色立方体图标表示您的 AppleScript 脚本的一个实例,该脚本将在加载该 nib 文件时在运行时创建。您可能已经正确地建立了从按钮到蓝色 AppleScript 立方体的“连接”,它指定当您单击按钮时,它应该调用 ButtonHandlerVolumeSetting0_() 函数(又名 AppleScript 处理程序)。您现在需要选择您的蓝色 AppleScript 立方体实例,如下图所示,然后右键单击(或按住 Control 单击)并从蓝色立方体拖动到您的输入文本字段,如下所示。

当您松开鼠标按钮时,它应该会显示一个黑色弹出面板,其中包含您可以“连接”到文本字段的可能属性。选择hostNameTextField

之后,当您选择蓝色 AppleScript 立方体时,在右侧实用工具区域的连接检查器中,您可以看到 AppleScript 脚本的连接。在Outlets 下,您将看到hostNameTextField 插座,在Received Actions 下,您将看到ButtonHandlerVolumeSetting0_()

虽然 hostNameTextField 属性在 AppleScript 中设置为初始值 missing value(AppleScript 等效于 Objective-C 的 nil),但通过在 nib 文件中建立此连接,在运行时,值的hostNameTextField 将设置为您指定的NSTextField。这将允许脚本和归档到 nib 文件中的对象层次结构之间进行通信。

[更新结束]

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 意味着您需要以提升的权限运行脚本,它将处理显示标准身份验证对话框。

【讨论】:

  • 得到以下错误:[AppDelegate InstallButton:]: Can't get stringValue of missing value.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多