Отображение предупредительных диалоговых окон
Предупредительные диалоговые окна сообщают пользователю события и представляют кнопки, позволяющие пользователю выбрать, как продолжить. Можно реализовать предупредительные диалоговые окна путем вызова методов NSAlert
класс и путем вызывания специальных функций.
Используя API NSAlert предпочтительный подход, если Вы пишете приложения, работающие на Mac OS v10.3 (или позже). Вы, таким образом, получаете преимущества объектно-ориентированные, а также дополнительные функции модели, такие как возможность вывести на экран справочную информацию, связанную с предупредительным диалоговым окном.
Используя класс NSAlert
Используя NSAlert
API для отображения предупредительного диалогового окна включает три простых шага: создание и инициализация NSAlert
экземпляр, выполняя диалоговое окно, и интерпретируя и действуя на выбор пользователя.
Создайте
NSAlert
возразите хотя стандартный Objective Calloc
- и -init
процедура. Тогда отправьте требуемоеNSAlert
«метод set» обменивается сообщениями для инициализации предупреждения. Перечисление 1 дает пример этого.Создание перечисления 1 и инициализация объекта NSAlert
NSAlert *alert = [[NSAlert alloc] init];
[alert addButtonWithTitle:@"OK"];
[alert addButtonWithTitle:@"Cancel"];
[alert setMessageText:@"Delete the record?"];
[alert setInformativeText:@"Deleted records cannot be restored."];
[alert setAlertStyle:NSWarningAlertStyle];
Вызовите
runModal
метод наNSAlert
объект.Протестируйте возврат результата из
runModal
и продолжите соответственно.Перечисление 2 иллюстрирует последние два шага.
Перечисление 2 , Выполняющее диалоговое окно и интерпретирующее результат
if ([alert runModal] == NSAlertFirstButtonReturn) {
// OK clicked, delete the record
[self deleteRecord:currentRec];
}
[alert release];
Код возврата
enum
постоянная идентификация кнопки на диалоговом окне, что щелкают по пользователю. Первая кнопка добавила к диалоговому окну (который, в слева направо сценариях, одно самое близкое к правому краю), идентифицируетсяNSAlertFirstButtonReturn
. Добавляющаяся вторая кнопка появляется только налево от первого и идентифицируетсяNSAlertSecondButtonReturn
— и т.д для третьей кнопки.Удостоверьтесь, что Вы выпускаете
NSAlert
экземпляр.
Можно также создать NSAlert
возразите непосредственно от NSError
объект с помощью alertWithError:
метод. Можно тогда модально выполнить предупреждение, таким образом представив информацию об ошибке пользователю. Метод использует локализованное описание, предложение восстановления и опции восстановления, инкапсулировавшие NSError
объект для текста сообщения предупреждения, информативного текста и заголовков кнопки, соответственно.
Как удобство для совместимости с более старым функциональным API (см. Используя Функциональный APIs), можно создать NSAlert
объекты с методом фабрики классов alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:
. Этот метод позволяет, Вы для сохранения более ранних констант раньше идентифицировали нажатую кнопку. Вот пример того, как Вы могли бы вызвать этот метод (с предыдущим примером в памяти):
NSAlert *alert = [NSAlert alertWithMessageText:@"Delete the record?" |
defaultButton:@"OK" alternateButton:@"Cancel" |
otherButton:nil informativeTextWithFormat: |
@"Deleted records cannot be restored."]; |
Используя функциональный APIs
Можно также вызвать функции, чтобы создать и вывести на экран предупреждения. Существует три вида функций:
Чтобы создать и выполнить предупредительную панель, использовать
NSRunAlertPanel
,NSRunCriticalAlertPanel
, илиNSRunInformationalAlertPanel
.Чтобы создать и выполнить предупредительный лист, использовать
NSBeginAlertSheet
,NSBeginCriticalAlertSheet
, илиNSBeginInformationalAlertSheet
.Для создания предупредительной панели использовать
NSGetAlertPanel
,NSGetCriticalAlertPanel
, илиNSGetInformationalAlertPanel
.