Использование UIActionSheet на iPad

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

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

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

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

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

Кроме того, отображение моей таблицы действий с анимацией вообще не работает. Он выглядит и действует точно так же, как 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 (из приложения карт, где вы добавляете местоположение к контакту)?

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

Спасибо!


person GendoIkari    schedule 02.11.2010    source источник


Ответы (1)


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

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

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

person omz    schedule 13.01.2011
comment
+1 за ваш ответ. Очень полезно! Вы сказали, что Конечно, есть много случаев, когда вы не можете заменить всплывающее окно листом действий, потому что лист действий показывает только список кнопок и заголовок, тогда как всплывающее окно может отображать любой контроллер представления. . Итак, невозможно представить средство выбора даты, я не прав? Спасибо. - person Lorenzo B; 26.06.2012