0

ボタンをクリックすると、現在の GUI が閉じて新しい GUI が開くようにしようとしています。

開くための 2 つ目のインターフェイスを作成しました。現在、2 つの xib ファイルと AppDelegate ファイルがあります。両方の GUI を同じ AppDelegate ファイルでプログラムしますか?

第二に、最初のxibファイルを閉じて2番目のxibファイルを開くにはどうすればよいですか。

on buttonClicked_(sender)

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

end buttonClicked_
4

1 に答える 1

1

通常、AppleScriptObjC にはアプリケーション デリゲートが 1 つだけあります。ウィンドウを別の 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 に答える