UIAlertController - видовые представления сообщений

Объект UIAlertController выводит на экран сообщение для пользователя. Данный класс заменяет классы UIActionSheet и UIAlertView начиная с iOS 9. После настройки контроллер сообщений выводится на экран с помощью метода presentViewController:animated:completion:.

Дополнительно к отображению сообщения для пользователя, вы можете ассоциировать действия, которые может использовать. Для добавления кождого действия вы используете метод addAction:, контроллер настраивает кнопку на выполнение соответствующего действия. Когда пользователь нажимает на кнопку, контроллер выполняет блок, заданный вами при создании объекта для действия. Ниже приведен пример настройки сообщения с одним действием.

Использование в качестве Alert View

UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Alert"
                               message:@"Это сообщение"
                               preferredStyle:UIAlertControllerStyleAlert];
 
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
   handler:^(UIAlertAction * action) {}];
 
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];

Стиль контроллера сообщений задается в UIAlertControllerStyleAlert, задекларированной как:

typedef enum UIAlertControllerStyle: NSInteger {
   UIAlertControllerStyleActionSheet = 0,
   UIAlertControllerStyleAlert 
} UIAlertControllerStyle;
  • UIAlertControllerStyleActionSheet - отображает Action Sheet в контексте видового представления.
  • UIAlertControllerStyleAlert - выводит модальное сообщение на экран.

При желании можно добавить несколько текстовых полей.

  UIAlertController* alert= [UIAlertController alertControllerWithTitle:@"Запрос"
                   message:@"Введите имя пользователя и пароль" preferredStyle:UIAlertControllerStyleAlert];
  
  
  UIAlertAction* actionOK = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
                                  handler:^(UIAlertAction * _Nonnull action){
      NSLog(@"User name: %@, Password: %@", alert.textFields[0].text, alert.textFields[1].text);
    
  }];
  
  UIAlertAction* actionCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
  
  [alert addAction:actionOK];
  [alert addAction:actionCancel];
  
  [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
    textField.placeholder = @"User Name";
  }];
  [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
    textField.placeholder = @"Password";
  }];
  [self presentViewController:alert animated:YES completion:nil];

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

Вывод после ввода пароля и логина и нажатия на кнопку "Ok":

alertController[1603:189718] User name: Alex, Password: 11111

Использование в качестве Action Sheet

  UIAlertController *alert = [UIAlertController alertControllerWithTitle:
		@"Action Sheet" message:@"Выберите действие" preferredStyle:UIAlertControllerStyleActionSheet];
  UIAlertAction* actionDel = [UIAlertAction actionWithTitle:@"Удалить" style:UIAlertActionStyleDefault
  		 handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"Delete action selected");
  }];
  UIAlertAction* actionAdd = [UIAlertAction actionWithTitle:@"Добавить" style:UIAlertActionStyleDefault
  		 handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"Add action selected");
  }];
  UIAlertAction* actionCancel = [UIAlertAction actionWithTitle:@"Отмена" style:UIAlertActionStyleCancel
  		 handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"Cancel action selected");
  }];
  [alert addAction:actionDel];
  [alert addAction:actionAdd];
  [alert addAction:actionCancel];
  [self presentViewController:alert animated:YES completion:nil];
 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac