Con iOS 8.0, Apple introdujo UIAlertController para reemplazar UIActionSheet . Desafortunadamente, Apple no agregó ninguna información sobre cómo presentarlo. Encontré una entrada al respecto en el blog de hayaGeek, sin embargo, no parece funcionar en iPad. La vista está totalmente fuera de lugar:
Fuera de lugar:
Correcto:
Utilizo el siguiente código para mostrarlo en la interfaz:
let alert = UIAlertController()
// setting buttons
self.presentModalViewController(alert, animated: true)
¿Hay otra forma de agregarlo para iPad? ¿O Apple simplemente olvidó el iPad, o aún no lo implementó?
ios
ipad
user-interface
uialertcontroller
Matt3o12
fuente
fuente
En iPad, la alerta se mostrará como un popover usando el nuevo UIPopoverPresentationController , requiere que especifique un punto de anclaje para la presentación del popover usando sourceView y sourceRect o barButtonItem
Para especificar el punto de anclaje, necesitará obtener una referencia al UIPopoverPresentationController de UIAlertController y establecer una de las propiedades de la siguiente manera:
Código de muestra:
fuente
En Swift 2, desea hacer algo como esto para mostrarlo correctamente en iPhone y iPad:
Si no configura el presentador, terminará con una excepción en el iPad
-[UIPopoverPresentationController presentationTransitionWillBegin]
con el siguiente mensaje:fuente
Actualización para Swift 3.0 y superior
fuente
Actualización 2018
Acabo de rechazar una aplicación por este motivo y una resolución muy rápida fue simplemente cambiar de usar una hoja de acción a una alerta.
Funcionó de maravilla y pasó los probadores de App Store muy bien.
Puede que no sea una respuesta adecuada para todos, pero espero que esto ayude a algunos de ustedes a salir de apuros rápidamente.
fuente
Swift 4 y superior
He creado una extensión
Cómo utilizar:
fuente
Aquí hay una solución rápida:
fuente
Swift 5
Utilicé el estilo de "hoja de acciones" para iPhone y "alerta" para iPad. iPad se muestra en el centro de la pantalla. No es necesario especificar sourceView ni anclar la vista en ningún lado.
Editar: según la sugerencia de ShareToD, actualizado "UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiom.pad" comprobar
fuente
Para mí solo necesitaba agregar lo siguiente:
fuente
Simplemente agregue el siguiente código antes de presentar su hoja de acción:
fuente