Отображение предупредительных диалоговых окон

Предупредительные диалоговые окна сообщают пользователю события и представляют кнопки, позволяющие пользователю выбрать, как продолжить. Можно реализовать предупредительные диалоговые окна путем вызова методов NSAlert класс и путем вызывания специальных функций.

Используя API NSAlert предпочтительный подход, если Вы пишете приложения, работающие на Mac OS v10.3 (или позже). Вы, таким образом, получаете преимущества объектно-ориентированные, а также дополнительные функции модели, такие как возможность вывести на экран справочную информацию, связанную с предупредительным диалоговым окном.

Используя класс NSAlert

Используя NSAlert API для отображения предупредительного диалогового окна включает три простых шага: создание и инициализация NSAlert экземпляр, выполняя диалоговое окно, и интерпретируя и действуя на выбор пользователя.

  1. Создайте NSAlert возразите хотя стандартный Objective C alloc- и -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];
  2. Вызовите runModal метод на NSAlert объект.

  3. Протестируйте возврат результата из 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

Можно также вызвать функции, чтобы создать и вывести на экран предупреждения. Существует три вида функций: