2

このようなウィンドウがあり、3 つのサブビューがあり、それぞれにボタンがあります。それらをクリックすると、シートを表示する必要があります。

ここに画像の説明を入力

ここに画像の説明を入力

このコードを使用すると、シートがウィンドウの中央に表示されます。

- (IBAction)closeSubWindow:(id)sender{
    [NSApp endSheet:self.subWindow];
    [self.subWindow orderOut:nil];
    
}

- (IBAction)showSubWindow:(id)sender {
    [NSApp beginSheet:self.subWindow
       modalForWindow:self.window
        modalDelegate:self
       didEndSelector:nil
          contextInfo:nil];
}

特定の座標でシートを表示するオプションまたは方法はありますか?

編集:

私の現在の実装は、を使用してNSPopoverいます。NSPopoverこれをシートのようにアニメーション化できますか?

4

2 に答える 2

5

NSWindowデリゲートメソッドを見てみましょう-window:willPositionSheet:usingRect:

于 2013-04-29T17:20:17.580 に答える
0

シートは、あなたが見るものの定義ごとです。いいえ、別の位置に配置する方法はありません。独自の実装を作成することもできますが、状況によっては、シートではなくNSPopoverなどを使用する方がよい場合があります。これは OSX 10.7 以降で利用可能で、値を表示/入力するための一時的なビューを持つ優れた手段です。一時的 (または半一時的) スタイルを使用することで、フレームワークは表示を管理します (不要になったポップオーバーは自動的に非表示になります)。もちろん、変更をコミットするために [OK] ボタンを配置することもできます。

ポップオーバーもシートと同じようにモーダルなので、機能的には非常に似ていますが、その位置に関してはより自由があります。

于 2013-04-29T11:23:02.413 に答える