我的可可程序有一个保存功能,当用户选择保存目的地时,我将不得不调出另一个 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),我的 NSPanel 会显示 1/2 秒,然后它就消失了,即使我没有调用 NSApp endSheet