0

シートの状態を判断する方法はありますか? 私はこのメソッドを呼び出すことができることを知っています:

- (void) customSheetDidClose : (NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo

しかし、私がやりたいことは次のようなものです:

- (void) getInfoMethod { 

    //...do a lot of stuff to gather data

    [self openSheetMethod:dictionaryFullOfStuff];


    //I am completely making this up
    while([panFileDataEditor state] == open) { 
        //do nothing
    } 

}

- (void) openSheetMethod : (NSDictionary*) stuff { 

    //...do something with stuff

    [NSApp beginSheet: panFileDataEditor modalForWindow: window modalDelegate: self didEndSelector: @selector(customSheetDidClose:returnCode:contextInfo:) contextInfo: nil];

}

私は自分のシートに NSPanel を使用しています。そのフレームを取得し、y の位置を確認してステータスを判断できると考えていましたが、これを行うための受け入れられた方法があるかどうかを確認したかったのです...

4

2 に答える 2

0
BOOL hasSheet = ([window attachedSheet] != nil);

シートが存在するかどうかをテストすることのみを目的としています。-[NSWindow attachedSheet]シートがある場合はシートを返し、ない場合はシートを返しnilます。あなたが取得しようとしている「状態」については明確ではありませんが、

NSWindow * theSheet = [window attachedSheet];

シート自体を提供します。そこから、好きなことをすることができます: [theSheet frame]、例えば

于 2012-02-29T19:10:01.377 に答える
0

Cocoa はイベント ベースのシステムであるため、while ループで何かが起こるのを待つ必要はありません。代わりに、何かが起こると、作成したメソッドがシステムによって呼び出されます。したがって、while ループはありません。

クラスに customSheetDidClose:returnCode:contextInfo: メソッドを実装し (呼び出しません)、シートが閉じたときに呼び出されます。

シートが開いているときにカスタム処理が必要な場合は、シートを処理する NSWindowController のサブクラスを作成します。

于 2012-02-29T23:48:23.063 に答える