1

新しいウィンドウを開くという非常に単純なタスクを実行しようとしていますが、完全に実行できないようです。

Mac で monobjc を使用して MonoMac を使用しています。新しい monobjc プロジェクトを作成すると、MainMenu.xib が作成されます。XCode エディターを使用して、このファイルにコントロールとバインディングを追加することができました。このウィンドウは、アプリケーションを起動すると自動的に開きます。

ただし、新しいウィンドウを作成しようとすると、まったく表示されません。MainMenu.xib の親フォルダーを右クリックし、[ファイルの追加] => [Cocoa Window Template] をクリックして、.xib ファイルを作成しました。このファイルは XCode で MainMenu.xib だけで編集できます。

次に、NSWindowController を継承するクラスの作成に進み、このクラスを .xib ファイル内のウィンドウの「ファイルの所有者」として選択しました。その後、ウィンドウを設計し、コントローラーにアウトレットとアクションを追加することができました。

しかし、窓の開け方がわかりません。私はこれの複数のバリエーションを試しました:

var f = new RegularLoginForm(); //which inherits NSWindowController
f.LoadWindow(); //I have tried without this line
f.ShowWindow(null); // I have also tried sending in the AppDelegate object (which is the controller for MainMenu.xib)

しかし、何も機能していないようです。つまり、ウィンドウが開きません。助言がありますか?

編集:これは私の.xibとその構成がどのように見えるかのスクリーンショットです: https://dl.dropbox.com/u/1545094/so_nswindowcontroller.png

4

1 に答える 1

1

Window.xibでRegularLoginFormをファイルの所有者として設定します。しかし、ファイルの所有者からInterface Builderのウィンドウにウィンドウアウトレットも接続しましたか?

つまり、IBでファイルの所有者を右クリックし、ウィンドウアウトレットをクリックしてウィンドウオブジェクトにドラッグします。

さらに、私はあなたのコードを試しましたが、私にとっては、

f.ShowWindow(null)

[エラー]致命的な未処理の例外:System.ArgumentNullException:引数をnullにすることはできません。パラメータ名:送信者

送信者パラメータを割り当てると正常に実行されます。例:

f.ShowWindow(this)

ただし、私の環境はMonoMacのみです。monoobjcはありません(両方を一緒に使用する方法や理由がわかりません)。だからYMMV。

于 2013-02-07T16:24:14.013 に答える