Окно NSAlert OS X не закроется в xCode 8 в Objective-C
Я использовал метод ниже в xCode 7, чтобы показать предупреждения / ошибки. Я знаю, что alertWithMessageText устарела. Если я использую этот метод в xCode 8 (хотя и устарел), окно не закрывается, когда пользователь нажимает кнопку Ok. Я посмотрел на десятки постов, чтобы заменить его на beginSheetModalForWindow: завершение, и не смог заставить его работать. Некоторые примеры кода будут с благодарностью.
(Я получаю следующее консольное сообщение при запуске метода xCode 7: 2016-10-12 15:35:23.537072 eBuyBooks[7886:2192964] [Layout] Обнаружены отсутствующие ограничения для. Его нельзя разместить, так как недостаточно ограничений для полностью определите размер и происхождение. Добавьте недостающие ограничения или установите translatesAutoresizingMaskIntoConstraints=YES, и ограничения будут сгенерированы для вас. Если это представление выложено вручную в macOS 10.12 и более поздних версиях, вы можете не вызывать [super layout] из вашего переопределить. Установите точку останова на 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];
}
1 ответ
Попробуйте это как замену, это не рекомендуется:
// in implementation file
- (void)errorPopUp:(NSString *)reason detail:(NSString *)detail {
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:reason];
[alert setInformativeText:detail];
[alert setAlertStyle:NSCriticalAlertStyle]; // or NSWarningAlertStyle, or NSInformationalAlertStyle
[alert addButtonWithTitle:@"OK"];
[alert runModal];
}
Чтобы установить символическую точку останова, перейдите в Навигатор точек останова (маленькая контурная стрелка в левом верхнем углу окна вашего проекта), нажмите "+" в левом нижнем углу окна, выберите "Символическая точка останова" и введите DETECTED_MISSING_CONSTRAINTS
для символа.
Если точка останова попадет, вы можете ввести po $arg1
в представлении отладчика вывести описание представления, в котором отсутствуют ограничения.