3

Cocoa で複数のウィンドウを操作するには? ココア アプリケーションを作成しました。そのアプリケーションを実行すると、デフォルトのウィンドウが自動的に表示されます。ウィンドウにボタンを追加しました。ボタンをクリックすると、IB で作成した MySecondWindow という名前の別のウィンドウが開きます。

MySecondWindow のウィンドウ コントローラー (MySecondWindowController) を作成し、IB の nib にリンクしました。メイン ウィンドウのボタンをクリックすると、MySecondWindowController のインスタンスを作成する IBAction が呼び出されNSApp beginSheet:[mySecondWindowObj window]. Modal session requires modal windowでメッセージを受信して​​いますNSlog。で印刷しようとすると、印刷さ[mySecondWindowObj window]れます..NSLognull

どうすればいいのかわからない。これを機能させるために必要なことは何ですか?私は助けが必要です..

ありがとう..

4

2 に答える 2

3
YourWindowController* sheet;

[[NSApplication sharedApplication] beginSheet:[sheet window]
                               modalForWindow:[[NSApplication sharedApplication] mainWindow]
                                modalDelegate:nil
                               didEndSelector:nil
                                  contextInfo:nil];

ウィンドウが適切にインスタンス化されていることを確認してください。IB の「Visible At Launch」オプションがチェックされていないことを確認してください。

編集: 別の nib ファイルからこのウィンドウをロードしていることに気付きました。正しく読み込んでいることを確認してください。これを使って:

YourWindowController* sheet = [[YourWindowController alloc] initWithWindowNibName:@"NameOfNibMinusExtension"];

また:

「ファイル所有者」タイプがカスタムウィンドウコントローラーのクラス名に設定されていること、および「ウィンドウ」が Nib のウィンドウに設定されていることを確認してください。

ファイルの所有者を右クリック (または Cmd + クリック) し、「window」プロパティが対応するウィンドウに接続されていることを確認します。また、もう一度、ウィンドウの「起動時に表示」がチェックされていないことを確認してください。

于 2011-02-07T06:39:15.663 に答える
1

Control キーを押したまま、ボタンをクリックして押したままにし、線を MySecondWindow までドラッグします。メソッドでいっぱいの小さなブラック ボックスが表示されますmakeKeyAndOrderFront:

これが行うことは、ボタンをクリックすると、ボタン (NSButton のインスタンス) がmakeKeyAndOrderFront:メッセージをウィンドウに送信するようにすることです。ボタンは、Cocoa でターゲット/アクション システムと呼ばれるものを実装する NSControl のサブクラスです。Interface Builder は、線をドラッグすると、ボタンのターゲットを MySecondWindow に設定し、アクションを に設定しますmakeKeyAndOrderFront:。NSButton は、クリックを受信したときにアクション メッセージをターゲットに送信するように内部的にプログラムされます。

わかる?

于 2011-02-07T05:48:16.943 に答える