UIActionSheet против UIAlertController — iPad

Должны ли мы работать с UIAlertController в iOS8 или мы все еще можем работать с UIActionSheet?

Мне не нужны массовые изменения нашего кода для совместимости с iOS 8, но я столкнулся с несколькими проблемами при работе с UIActionSheet на iPad.

Например, я получаю это исключение при использовании UIActionSheet:

UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x7c57bf90>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.

Я понимаю, что предпочтительнее работать с новым UIAlertController, но есть ли обходной путь для этого, чтобы продолжить работу с UIActionSheet?

Также в местах, которые действительно показывает UIActionSheet (без исключения), он содержит стрелку + он не центрирован, как раньше (iOS7) - я использую showInView (также пытался работать с showFromRect, но получил те же результаты).


person Tomer Peled    schedule 24.08.2014    source источник
comment
Используете ли вы всплывающее окно для представления UIAlertController на iPad?   -  person Moon Cat    schedule 26.08.2014
comment
Я все еще не хочу переходить на новый UIAlertController, я использую UIActionSheet.   -  person Tomer Peled    schedule 26.08.2014
comment
Я вижу ту же проблему в нашем приложении. UIActionSheet, похоже, не работает в iOS 8. К сожалению, API для UIAlertController сильно отличается, поэтому писать код, поддерживающий обе версии ОС, сложно.   -  person n8gray    schedule 05.09.2014
comment
Я нашел решение, добавив категорию UIActionSheet, прочитайте мой вопрос, я пишу решение самого вопроса, "> stackoverflow.com/questions/24363761/   -  person Jageen    schedule 05.09.2014


Ответы (1)


Из документации ясно, что UIActionSheet устарел. Означает, что вы все еще можете использовать его, но в будущем он может выйти из строя или будет полностью удален.

Я настоятельно рекомендую вам обновиться до UIAlertController.

Исключение, которое вы получили на iPad, понятно. Поскольку UIAlertController со стилем actionSheet нуждается в sourceView (будет представлен вид из фактического контроллера), так как его больше нет в полноэкранном режиме (как на iPhone).

person Marek Staňa    schedule 03.06.2018