В iOS 8.0 Apple представила UIAlertController вместо UIActionSheet . К сожалению, Apple не добавила никакой информации о том, как это представить. Я нашел запись об этом в блоге hayaGeek, однако, это, кажется, не работает на iPad. Представление совершенно неуместно:
неуместный:
Верный:
Я использую следующий код, чтобы показать его на интерфейсе:
let alert = UIAlertController()
// setting buttons
self.presentModalViewController(alert, animated: true)
Есть ли другой способ добавить его для iPad? Или Apple просто забыла iPad или еще не реализована?
ios
ipad
user-interface
uialertcontroller
Matt3o12
источник
источник
На iPad оповещение будет отображаться как всплывающее окно с использованием нового UIPopoverPresentationController , для этого необходимо указать опорную точку для представления всплывающего окна с использованием либо sourceView и sourceRect, либо barButtonItem.
Для того чтобы указать точку привязки, вам нужно получить ссылку на UIPler-Control UIAlertController и установить одно из свойств следующим образом:
образец кода:
источник
В Swift 2 вы хотите сделать что-то подобное, чтобы правильно показать это на iPhone и iPad:
Если вы не настроите докладчика, вы получите исключение на iPad
-[UIPopoverPresentationController presentationTransitionWillBegin]
со следующим сообщением:источник
Обновление для Swift 3.0 и выше
источник
2018 Обновление
Я только что отклонил приложение по этой причине, и очень быстрое решение состояло в том, чтобы просто перейти от использования листа действий к предупреждению.
Сработал шарм и прошел тестеры App Store просто отлично.
Возможно, это не самый подходящий ответ для всех, но я надеюсь, что это быстро поможет некоторым из вас.
источник
Swift 4 и выше
Я создал расширение
Как пользоваться:
источник
Вот быстрое решение:
источник
Swift 5
Я использовал стиль «Actionsheet» для iPhone и «alert» для iPad. iPad отображается в центре экрана. Нет необходимости указывать sourceView или привязывать вид в любом месте.
Изменить: согласно предложению ShareToD, обновленная устаревшая проверка "UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiom.pad"
источник
Для меня мне просто нужно было добавить следующее:
источник
Просто добавьте следующий код, прежде чем представить свой лист действий:
источник