Использование UIActionSheet на iPad
Документация Apple для UIActionSheet вызывает у меня путаницу. Во-первых, в Руководстве по человеческому интерфейсу iPad говорится:
Чтобы узнать больше об использовании листа действий в вашем коде, см. "Использование Popovers для отображения содержимого" в Руководстве по программированию iPad.
Но затем в разделе "Использование Popovers to Display Content" он вообще не упоминает Action Sheets! Я что-то пропустил?
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 и вообще ничего не сделал). Здесь мой код:
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 в документации Apple (из приложения карт, где вы добавляете местоположение в контакт)?
Я могу просто использовать предупреждение для этого, а не popover или actionSheet, но было бы полезно понять это.
Спасибо!
Ответы
Ответ 1
Прежде всего, UIActionSheet
существовал до UIPopoverController
, а UIPopoverController
недоступен на iPhone, поэтому он полезен для обратной совместимости и универсальных приложений.
Кроме того, a UIActionSheet
не обязательно отображается в popover, в частности, если вы показываете его из UIBarButtonItem
или UIToolbar
, который уже находится внутри popover. Затем он представлен так же, как и на iPhone (сдвигается со дна контроллера). Согласно HIG, вы не должны одновременно представлять несколько popovers (однажды я отклонил это приложение), поэтому в случаях, когда контроллер просмотра может находиться внутри popover (например, в стандартном приложении с разделенным представлением), вы можете захотите использовать листы действий, если это возможно. Конечно, есть много случаев, когда вы не можете заменить popover листом действия, потому что в листе действий отображается только список кнопок и заголовок, тогда как popover может отображать любой контроллер вида.
Я думаю, что параметр animated
действует только тогда, когда лист действий представлен в стиле "классический" (как на iPhone).