13

わかりました、これは本当に私を困惑させています:

ウィンドウにモーダルシートを作成します

-(IBAction) login: (id) sender {
[NSApp beginSheet:loginWindow 
   modalForWindow:window 
    modalDelegate:nil 
   didEndSelector:nil 
      contextInfo:nil];
}

そしてそれを削除しようとします

-(IBAction) loginWindowCancelPressed:   (id) sender {
debugLog(@"cancel");
[NSApp endSheet:loginWindow];
}

しかし、それは残ります。

IB接続などの明らかなことをすべてチェックし、windowとloginWindowが存在し、通常の状態であることを確認しました。

だから、質問は:私は何かが欠けていますか?

4

2 に答える 2

20

シートのデリゲートを設定する必要があります。デリゲートは、次のような署名を持つメソッドを実装する必要があります。

- (void)didEndSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;

(必要に応じて別の名前を使用できますが、同じパラメーターを受け入れる必要があります。)

そのメソッドで必要なことは何でもできますが、最終的には次のように終了する必要があります。

[sheet orderOut:self];

シートを却下します。

于 2010-08-26T15:02:49.420 に答える