. Этот параметр не является обязательным.

Можно создать предупреждение вообще без кнопок. Но такое окно пользователь никак не сможет убрать с экрана. Создавая такой вид, вы как программист должны позаботиться о том, чтобы он убирался автоматически, например, через 3 секунды после того, как появится. Вид-предупреждение без кнопок, который не убирается автоматически, – это настоящее бедствие, с точки зрения пользователя. Ваше приложение не только получит низкие оценки на App Store за то, что вид-предупреждение блокирует пользовательский интерфейс. Велика вероятность, что вашу программу вообще удалят с рынка.

Виды-предупреждения можно оформлять с применением различных стилей. В классе UIAlertView есть свойство alertViewStyle типа UIAlertViewStyle:


>typedef NS_ENUM(NSInteger, UIAlertViewStyle) {

>UIAlertViewStyleDefault = 0,

>UIAlertViewStyleSecureTextInput,

>UIAlertViewStylePlainTextInput,

>UIAlertViewStyleLoginAndPasswordInput

>};


Вот что делает каждый из этих стилей:

• UIAlertViewStyleDefault – стандартный стиль вида-предупреждения, подобное оформление мы видели на рис. 1.2;

• UIAlertViewStyleSecureTextInput – при таком стиле в виде-предупреждении будет содержаться защищенное текстовое поле, которое станет скрывать от зрителя символы, вводимые пользователем. Такой вариант предупреждения вам подойдет, например, если вы запрашиваете у пользователя его учетные данные для дистанционного банковского обслуживания;

• UIAlertViewStylePlainTextInput – при таком стиле у пользователя будет отображаться незащищенное текстовое поле. Этот стиль отлично подходит для случаев, когда вы просите пользователя ввести несекретную последовательность символов, например номер его телефона;

• UIAlertViewStyleLoginAndPasswordInput – при таком стиле в виде-предупреждении будет два текстовых поля: незащищенное – для имени пользователя и защищенное – для пароля.

Если вам необходимо получать уведомление, когда пользователь начинает работать с видом-предупреждением, укажите объект-делегат для вашего предупреждения. Этот делегат должен подчиняться протоколу UIAlertViewDelegate. Самый важный метод, определяемый в этом протоколе, – alertView: clickedButtonAtIndex:, который вызывается сразу же, как только пользователь нажимает на одну из кнопок в виде-предупреждении. Индекс нажатой кнопки передается вам через параметр clickedButtonAtIndex.

В качестве примера отобразим предупреждение пользователю и спросим, хочет ли он перейти на сайт в браузере Safari после того, как нажмет ссылку на этот сайт, присутствующую в нашем пользовательском интерфейсе. В предупреждении будут отображаться две кнопки: Yes (Да) и No (Нет). В делегате вида-предупреждения мы увидим, какая кнопка была нажата, и предпримем соответствующие действия.

Сначала реализуем два очень простых метода, которые возвращают надпись на той или иной из двух кнопок:


>– (NSString *) yesButtonTitle{

>return @"Yes";

>}


>– (NSString *) noButtonTitle{

>return @"No";

>}

>Теперь нужно убедиться, что контроллер нашего вида подчиняется протоколу UIAlertViewDelegate:

>#import 


>#import "ViewController.h"


>@interface ViewController () 


>@end


>@implementation ViewController


>…


Следующий шаг – создать и отобразить для пользователя окно с предупреждением:


>– (void)viewDidAppear:(BOOL)animated{

>[super viewDidAppear: animated];


>self.view.backgroundColor = [UIColor whiteColor];


>NSString *message = @"Are you sure you want to open this link in Safari?";

>UIAlertView *alertView = [[UIAlertView alloc]

>initWithTitle:@"Open Link"

>message: message

>delegate: self

>cancelButtonTitle: [self noButtonTitle]