Saltar al contenido

Cómo usar la clase UIAlertController

03/11/2015
Como-usar-la-clase-UIAlertController

Como-usar-la-clase-UIAlertController

Cómo usar la clase UIAlertController

Esta semana he recibido dos consultas relativas a la clase UIAlertController.

¡No puede ser Apple ha deprecado UIAlertView!

¡Ahora que hago!

Que no cunda el pánico, podemos seguir usando los AlertViews, pero bajo una clase que Apple se sacó de la manga con iOS 8, en esta entrada vamos a ver cómo usar la clase UIAlertController.

UIAlertView is deprecated

O al menos esto es lo que nos dice la documentación de Apple, y son ellos los que mandan 🙁

Esto es lo que dice la documentación de Apple:

Important: UIAlertView is deprecated in iOS 8. (Note that UIAlertViewDelegate is also deprecated.) To create and manage alerts in iOS 8 and later, instead use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert.

Podemos seguir usando la clase, pero con el riesgo de que si Apple el día de mañana no lo permite, nuestra aplicación quedará obsoleta.

Esto es algo habitual, Apple depreca clases, añade nuevas, añade nuevos Frameworks, depreca otros, así que si te vas a dedicar a esto de forma más o menos sería, debes acostumbrarte a estas cosas.

UIAlertController

La clase UIAlertController es una clase que hace de “contenedor” y nos va a permitir instanciar los dos objetos que sirven para llamar la atención del usuario: el AlertView y el ActionSheet.

Es decir Apple depreca dos clases para que usemos solo una, ¿por qué? ni puñetera idea, Apple lo dice y nosotros obedecemos 😉

Vamos a ver con un ejemplo práctico como usar la clase UIAlertController, para ello puedes crear un proyecto vacío, con Single View Application como plantilla.

Si estás un poco perdido con esto, te ánimo a que visites esta entrada dónde te enseño a crear tu primera aplicación con Swift, sí, es el típico “Hello World” 😉

Después incluye dos botones en el storyboard, uno que usaremos para llamar a un AlertView, y otro que usaremos para desplegar un objeto de la clase UIActionSheet, por lo que deberás conectar un método a cada botón para realizar estas acciones.

UIAlertView

Bien, en nuestro primer método vamos a implementar el código necesario para crear un objeto de la clase UIAlertView, podemos implementar el método con lo siguiente:

let alertView = UIAlertController (title: "AVISO", message: "Estas en la mejor Web de desarrollo iOS", preferredStyle: UIAlertControllerStyle.Alert)       
        alertView.addAction(UIAlertAction (title: "OK", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alertView, animated: false, completion: nil)

Si te fijas, creamos un objeto de la clase UIAlertController, y lo importante viene cuándo le indicamos el estilo, en el parámetro: preferredStyle

Mira como le decimos que queremos usar un AlertView, usando un elemento de la enumeración: UIAlertControllerStyle el elemento .Alert y aquí está la clave, pues si nos fijamos en el resto del objeto, tiene mucha similitud con usar la clase UIAlertView.

UIActionSheet

La clase UIAlertController también nos permite usar un objeto de la clase UIActionSheet, ahora en realidad ya no es una clase, sino que es otro elemento de la enumeración UIAlertControllerStyle.

Para crear un actionSheet podemos implementar el método que asociamos a uno de nuestro botones con el siguiente código:

let menu = UIAlertController (title: "Elige tu opción", message: "Opciones", preferredStyle: .ActionSheet)
        let opcionUno = UIAlertAction (title: "Opción Uno", style: .Default, handler:
            //CLOSURE
            {(alert: UIAlertAction) -> Void in print ("Has seleccionado la opción uno")})
        let opcionDos = UIAlertAction (title: "Opción Dos", style: .Default, handler:
            //CLOSURE
            {(alert: UIAlertAction) -> Void in print ("Has seleccionado la opción dos")})
        menu.addAction(opcionUno)
        menu.addAction(opcionDos)
        self.presentViewController(menu, animated:true, completion: nil)

Una de las cosas que tenemos que tener en cuenta es cómo se presentan estas vistas, pues hacen uso del método presentViewController, y esto, dependiendo del sistema operativo, y del dispositivo que esté ejecutando la aplicación, puede crear algún que otro error.

Como sé que sólo has leído este articulo de pasada, te dejo un link para que descargues un ejemplo práctico de esta teórica entrada.

DESCARGA EL EJEMPLO PRÁCTICO

Cualquier duda déjame un comentario y te contesto con la mayor brevedad 😉