私のココア プログラムには保存機能があり、ユーザーが保存先を選択すると、別の NSPanel を起動して何らかのステータス (つまり、ファイルの保存が完了するまでにかかる時間) を表示する必要があります。これが私のコードです。 :
- (IBAction)savePressed:(id)sender {
__block NSSavePanel *saveDlg = [NSSavePanel savePanel];
// Enable options in the dialog.
[saveDlg setCanCreateDirectories:YES];
[saveDlg setAllowedFileTypes:[NSArray arrayWithObject:@"zip"]];
[saveDlg setCanSelectHiddenExtension:YES];
[saveDlg beginSheetModalForWindow:self.window completionHandler:^ (NSInteger result) {
if (result == NSOKButton) {
[self triggerNSPanel];
}
saveDlg = nil;
}];
}
- (void) triggerNSPanel {
if (!self.myPanel)
self.myPanel = [[NSPanel alloc] init];
[NSApp beginSheet:self.myPanel modalForWindow:self.window modalDelegate:nil didEndSelector:nil contextInfo:nil];
....
}
したがって、NSSavePanel が消えると (つまり、[OK] が押されると)、NSApp endSheet を呼び出さなくても、NSPanel が 1/2 秒間表示されます。