Использование UIActionSheet на iPad - PullRequest
18 голосов
/ 02 ноября 2010

Документация Apple для UIActionSheet вызывает у меня путаницу.Во-первых, в Руководстве по интерфейсу iPad для людей написано:

Чтобы узнать больше об использовании листа действий в своем коде, см. «Использование всплывающих окон для отображения содержимого» в Руководстве по программированию iPad.

Но в разделе «Использование всплывающих окон для отображения контента» вообще не упоминаются листы действий!Я что-то здесь упускаю?

http://developer.apple.com/library/ios/#documentation/General/Conceptual/iPadHIG/UIElements/UIElements.html#//apple_ref/doc/uid/TP40009446-CH6-SW9

Мой главный вопрос таков: на iPad, в чем разница между UIPopoverController и UIActionSheet?Если UIActionSheet автоматически представляется внутри UIPopoverController, есть ли какая-либо причина использовать UIActionSheet вообще?Я вижу, как его делегирование и автоматическое создание кнопок позволяют сократить количество строк кода, но есть ли разница в POV для удобства использования?

Кроме того, отображение моего actionSheet с анимацией вообще не работает.Он выглядит и действует точно так же, как ActionSheet, представленный без анимации (что точно так же, как если бы я просто использовал UIPopoverController и вообще не ActionSheet).Вот мой код:

UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"An unsaved property already exists. You must assign a name to this property before creating a new property. Would you like to:"
    delegate:self
    cancelButtonTitle:nil
    destructiveButtonTitle:@"Overwrite"
    otherButtonTitles:@"Open unsaved property", nil];

[action showFromRect:CGRectMake(0, 0, 200, 200) inView:self.mainSplitViewController.view animated:NO];

Как мне получить actionSheet, который выглядит как пример анимированного actionSheet в документации Apple (из приложения карт, где вы добавляете местоположение в контакт)?

Я могу просто использовать предупреждение для этого, а не всплывающее окно или список действий, но все равно было бы полезно это понять.

Спасибо!

1 Ответ

23 голосов
/ 14 января 2011

Прежде всего, UIActionSheet существовал до того, как UIPopoverController и UIPopoverController недоступны на iPhone, поэтому это полезно для обратной совместимости и универсальных приложений.

Кроме того, UIActionSheet isn 't обязательно представлен в поповере, в частности, если вы показываете его из UIBarButtonItem или UIToolbar, который уже находится внутри поповера.Затем он представлен таким же образом, как на iPhone (скользит снизу контроллера вида).Согласно HIG, вы не должны представлять несколько всплывающих окон одновременно (у меня когда-то было отклонено приложение для этого), поэтому в случаях, когда контроллер представления может быть внутри поповера (как в стандартном приложении с разделенным представлением), вы можетехотите использовать листы действий, если это возможно.Конечно, во многих случаях вы не можете заменить поповер на лист действий, потому что лист действий показывает только список кнопок и заголовок, тогда как поповер может отображать любой контроллер представления.

Я думаю, что параметр animated действует только тогда, когда лист действий представлен «классическим» (как на iPhone) способом.

...