Подтвердить что ты не робот

Использование 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, но было бы полезно понять это.

Спасибо!

4b9b3361

Ответ 1

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

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

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