Я использовал метод, приведенный ниже в xCode 7, для отображения предупреждений/ошибок. Я знаю, что alertWithMessageText устарел. Если я использую этот метод в xCode 8 (хотя и устарел), окно не закрывается, когда пользователь нажимает кнопку «ОК». Я просмотрел десятки сообщений, чтобы заменить его на метод beginSheetModalForWindow: completeHandler:, но не могу заставить его работать. Некоторый пример кода был бы весьма полезен.Окно OS X NSAlert не будет закрыто в xCode 8 в Objective-C
(я получаю следующее консольное сообщение, когда я запускаю метод Xcode 7: 2016-10-12 15: 35: 23.537072 eBuyBooks [7886: 2192964]. [Layout] Обнаружен недостающие ограничения для этого не может быть помещен, потому что там не хватает ограничений для полного определения размера и происхождения. Добавьте недостающие ограничения или установите translatesAutoresizingMaskIntoConstraints = YES, и для вас будут созданы ограничения. Если это представление выложено вручную на macOS 10.12 и более поздних версиях, вы можете отказаться от вызова [ супер макет] от переопределения. Установить точку останова на DETECTED_MISSING_CONSTRAINTS для отладки. Эта ошибка будет регистрироваться только один раз.)
// in Header file
NSAlert * alertWithOkButton;
.....
// in implementation file
- (void)errorPopUp:(NSString *)reason detail:(NSString *)detail {
alertWithOkButton = [NSAlert alertWithMessageText:reason
defaultButton:@"Ok"
alternateButton:nil
otherButton:nil
informativeTextWithFormat:@"%@",detail];
[alertWithOkButton runModal];
}
'beginSheetModalForWindow: completHandler:' является заменой 'runModal', а' runModal' не устарел. – Willeke
Замена 'alertWithMessageText' находится в документации:« Вместо этого выведите и запустите объект NSAlert и установите соответствующие атрибуты ». – Willeke