通常您在 AppleScriptObjC 中只有一个应用程序委托。窗口是否需要在另一个 xib 文件中的选择完全取决于窗口的用途。大多数开发人员更喜欢在 MainMenu.xib 中根本没有窗口,而是创建一个 MainWindow.xib,或者一些开发人员更喜欢动态创建 UI。因此,拥有 2、1 甚至 3 个 xib 文件并没有什么意义,无论如何我希望每个窗口都有一个 xib。
为了保持简单并使其一切正常:
- 将新窗口添加到您的项目(我将其保存为 MainWindow.xib)
- 将文件所有者的类设置为 NSWindowController
- 将窗口与文件的所有者连接并使其成为窗口
- 将新的 AppleScript 添加到您的项目(NSObject 的子类)
- 为窗口编写 IBOutLet 和操作(见下文)
- 将新的 NSObject 添加到 xib 文件
- 将 NSObject(蓝色立方体)的类设置为新的 AppleScript 对象
- 将窗口与 IBOutlets 和 IBActions 连接起来。
- 还将窗口的委托连接到脚本(蓝色立方体)
窗口脚本:
script mainWindow
property parent : "NSObject"
property myWindow : missing value
property myButton : missing value
on myButtonClicked:sender
log "I'm clicked"
end myButtonClicked:
end script
要加载窗口,我们需要在我们的应用程序委托中使用类似这样的内容:
set theController to current application's class "NSWindowController"'s alloc()'s init()
current application's class "NSBundle"'s loadNibNamed:"MainWindow" owner:theController
现在,当我们在应用程序委托中并正确加载了我们的 nib 时,我们可以通过执行来关闭我们的窗口,theController's close()
并通过使用来显示窗口theController's showWindow:me
对于另一个窗口,只需重复上述步骤,您就可以在它们之间切换。