如何在ApplescriptObjC中打开新的GUI并关闭旧的GUI

时间:2014-06-10 12:56:47

标签: xcode user-interface applescript applescript-objc

我试图这样做,当点击一个按钮时,当前的GUI关闭并打开一个新的GUI。

我创建了第二个打开的界面。所以现在,我有2个xib文件和AppDelegate文件。我是否使用相同的AppDelegate文件编写两个GUI?

其次,如何关闭第一个xib文件,打开第二个xib文件。

on buttonClicked_(sender)

-- Code that closes current GUI and opens new GUI here

end buttonClicked_

1 个答案:

答案 0 :(得分:1)

通常,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

要加载窗口,我们在app delegate中需要这样的东西:

set theController to current application's class "NSWindowController"'s alloc()'s init()
current application's class "NSBundle"'s loadNibNamed:"MainWindow" owner:theController

现在,当我们进入应用程序委托并正确加载我们的笔尖时,我们可以通过theController's close()关闭窗口并使用theController's showWindow:me显示窗口。对于其他窗口,只需重复上述步骤你可以在它们之间切换。