Я использовал этот простой общий метод в течение некоторого времени, и он отлично работает для диалоговых окон на основе приложений, однако мне бы хотелось, чтобы такая же функциональность была в диалоговом окне стиля листа, и мне трудно собрать его вместе.
Согласно документам, насколько я их понимаю, единственный нерекомендуемый подход из OS10.9 и более поздних версий - использовать класс NSAlert с процессом обработчика завершения. Кажется, почти невозможно вернуть Bool из метода общего назначения.
Мой код:
-(BOOL)confirm :(NSString*)questionTitle withMoreInfo:(NSString*)addInfo andTheActionButtonTitle:(NSString*)actionType{
BOOL confirmFlag = NO;
NSAlert *alert = [NSAlert alertWithMessageText: questionTitle
defaultButton:actionType
alternateButton:@"Cancel"
otherButton:nil
informativeTextWithFormat:@"%@",addInfo];
[alert setAlertStyle:1];
NSInteger button = [alert runModal];
if(button == NSAlertDefaultReturn){
confirmFlag = YES;
}else{
confirmFlag = NO;
}
return confirmFlag;
}
The [alert runModal] returns the value I can return.
Используя более новую парадигму, [alert beginSheetModalForWindow:[self window]sheetWindow completeHandler: some_handler] не позволяет мне обновлять или возвращать значение в конце метода. Я знаю, почему, но есть ли способ, о котором я не думаю, чтобы это сделать.
Пожалуйста, покажите мне, как создать метод, аналогичный тому, который я использовал для листов.
Спасибо Мие