0

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

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

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

on buttonClicked_(sender)

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

end buttonClicked_
4

1 回答 1

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

要加载窗口,我们需要在我们的应用程序委托中使用类似这样的内容:

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对于另一个窗口,只需重复上述步骤,您就可以在它们之间切换。

于 2014-06-11T14:21:30.893 回答