Action Sheet - запросы пользовательских действий

Внимание UIActionSheet устарело начиная с iOS 9, и заменено UIAlertController, который и стоит использовать.

Action Sheet отображает набор кнопок, представляющих несколько альтернативных вариантов выполнения задачи по инициативе пользователя. Например, когда пользователь нажимает кнопку "Отправить" на панели инструментов приложения, появляется страница, которая предлагает список таких вариантов, как электронная почта, печать, и так далее.

uiactionsheet

Программное создание и заполнение Action sheet

Вы не можете создавать или манипулировать Action sheet в Interface Builder. Чаще всего, Action sheet всплывает над существующим представлением вида для его перекрытия, и это налагает на пользователя обязательство по его закрытию.

Когда вы создаете объект Action sheet из класса UIActionSheet, можно инициализировать его важнейшие свойства из одного метода, initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:. В зависимости от потребностей вашего приложения, этого может быть достаточно, чтобы настроить полнофункциональный объект Action sheet, как показано в следующем коде. После того как вы создали объект Action sheet, необходимо отправить ему show... сообщение, например showInView: для его отображения.

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil
                  delegate:self
                  cancelButtonTitle:@"Cancel"
                  destructiveButtonTitle:@"Delete Note"
                  otherButtonTitles:nil];

Первый параметр данного метода инициализации предоставляет возможность назначить заголовок для Action sheet, но правила разработки пользовательского интерфейса iOS рекомендуют не использовать данный параметр.

Как описано в правилах разработки пользовательского интерфейса iOS, вы должны включать в Action sheet кнопку "Отмена", отображаемую на iPhone, а также на iPad отображая поверх popover. В противном случае для iPad, action sheet необходимо отображать в popover, и пользователь может отменить action sheet, прикосновением вне popover, в этом случае вам не нужно включать кнопку "Отмена".

Чтобы создать кнопку "Отмена", передайте значение не-nil для cancelButtonTitle: параметра метода initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:. Кнопка "Отменить" созданная таким образом позиционируется в нижней части Action sheet.

Когда ваш Action sheet представляет потенциально деструктивный выбор, вы должны включить деструктивную кнопку, передав значение не-nil для destructiveButtonTitle: параметра метода initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:. Деструктивная кнопка созданная таким образом, имеет красный цвет и расположена в верхней части Action sheet.

Программирование поведения Action Sheets

Вы можете выбрать, как вывести Action Sheet, это может быть из панели инструментов, панели вкладок, элемента кнопки панели, из представления вида, или от заданного прямоугольника в виде. На iPhone, поскольку Action Sheet скользит вверх от нижней части вида и охватывает ширину экрана, большинство приложений используют showInView:. На iPad, Action Sheet появляются в popover, стрелка которого указывает на элемент управления, который нажал пользователь. Так, showFromRect:inView:animated: и showFromBarButtonItem:animated: наиболее полезны для iPad.

Для обработки нажатий пользователем кнопок Action Sheet, необходимо назначить делегата, который должен соответствовать протоколу UIActionSheetDelegate. Вы назначаете делегата в параметре delegate при инициализации объекта Action Sheet. Делегат должен реализовывать сообщение actionSheet:clickedButtonAtIndex: в ответ на нажатие кнопки. Например, следующий код показывает реализацию, которая просто регистрирует название кнопки, которая нажата.

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"Кнопка - %@ - была нажата.", [actionSheet buttonTitleAtIndex:buttonIndex]);
}

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

Компоновка Action Sheet осуществляется за вас. Вы не можете создавать ограничения автокомпоновки между Action Sheet и другогими элементами пользовательского интерфейса.

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac