В моей программе какао есть функция сохранения, которая, когда пользователь выбрал пункт сохранения, мне нужно будет открыть еще один NSPanel, чтобы отобразить какой-то статус (т. Е. Сколько времени потребуется, чтобы закончить сохранение файла. мой код:не может вызвать startSheet после нажатия OK в NSSavePanel?
- (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 исчезнет (т. е нормально нажимается), мой NSPanel показывает на как 1/2 второго, то это пошло, я даже не звонил NSApp endSheet
Да, я изменил свой код на: [self performSelector: @selector (triggerNSPanel) withObject: nil afterDelay: 0]; и теперь он отлично работает, большое вам спасибо за вашу помощь :) – Josh