Me gustaría crear la siguiente UIAlertAction:

Crear un UIAlertAction en Swift

@IBAction func buttonUpgrade(sender: AnyObject) {

           let alertController = UIAlertController(title: "Title",
        message: "Message",
        preferredStyle: UIAlertControllerStyle.Alert)

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in
        //...
    }

    alertController.addAction(cancelAction)
}

Soy consciente de que un UIAlertController se inicializa con un title, message, y si se prefiere mostrarse como una alerta o planilla de acción.

Cuando se pulsa el botón me gustaría mostrar la alerta, pero alert.show() no funciona. Por qué no mi código de trabajo?

InformationsquelleAutor Cesare | 2015-01-25

3 Comentarios

  1. 14

    El principal problema aquí es que UIAlertController (a diferencia de UIAlertView) es una subclase de UIViewControlller, lo que significa que necesita ser presentados como tales (y no a través de la show() método). Aparte de eso, si usted quiere cambiar el color del botón de cancelar para rojo, tienes que configurar la acción de cancelar la alerta de estilo para .Destructive.

    Esto sólo funciona si desea que el botón rojo. Si desea cambiar los colores de los botones en el controlador de alerta arbitraria de colores, esto sólo puede hacerse mediante el establecimiento de la tintColor de propiedad sobre la alerta del controlador de view de la propiedad, que va a cambiar el matiz de color de todos sus botones (excepto aquellos que son destructivas). Cabe señalar que con los paradigmas de diseño que Apple ha puesto en su lugar, no es necesario cambiar el botón cancelar del color debido a las implicaciones de tener el texto en negrita.

    Si usted todavía desea que el texto a ser de color rojo aunque, se puede hacer de la siguiente manera:

    let alertController = UIAlertController(
        title: "Title",
        message: "Message",
        preferredStyle: UIAlertControllerStyle.Alert
    )
    
    let cancelAction = UIAlertAction(
        title: "Cancel",
        style: UIAlertActionStyle.Destructive) { (action) in
        //...
    }
    
    let confirmAction = UIAlertAction(
        title: "OK", style: UIAlertActionStyle.Default) { (action) in
        //...
    }
    
    alertController.addAction(confirmAction)
    alertController.addAction(cancelAction)
    
    presentViewController(alertController, animated: true, completion: nil)

    Que produce los resultados que usted está después de:

    Crear un UIAlertAction en Swift

    • Todavía no puedo envolver mi por delante de todo el swift sintaxis para cierres… Lo in supone que significa eso? ¿por qué es todo lo que en las llaves? Va a tomar tiempo para acostumbrarse a ella…
    • in sólo separa los argumentos desde el cierre de la aplicación
    • Una buena manera de que me he enterado de que me ayuda a recordar cómo en la sintaxis usada es la de pensar que, en el ejemplo anterior, «la Acción es la protagonista DE la siguiente función».
  2. 5
    let alertController = UIAlertController(
        title: "Title",
        message: "Message",
        preferredStyle: UIAlertControllerStyle.Alert
    )
    
    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (action) in
        //...
    }
    
    let okayAction = UIAlertAction(title: "OK", style: .Default) { (action) in
        //...
    }
    
    alertController.addAction(okayAction)    
    alertController.addAction(cancelAction)
    
    self.presentViewController(alertController, animated: true) {
        //...
    }
    • ¿Dónde se coloca .Cancel?
    • var acción cancelaction = UIAlertAction(título: «Cancelar», estilo: UIAlertActionStyle.Cancelar) { UIAlertAction en NSLog(«Cancelar » Presionado») } alert.addAction(acción cancelaction)
    • Por favor, añadir a su respuesta.
    • Gracias. ¿Cómo puedo cambiar el color de «Cancelar» en rojo? Gracias!
  3. 2
    var alertController = UIAlertController(title: "Alert", message:"Message", preferredStyle: UIAlertControllerStyle.Alert)
    let confirmed = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)
    let cancel = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
    
    alertController.addAction(confirmed)
    alertController.addAction(cancel)
    self.presentViewController(alertController, animated: true, completion: nil)

    Importante es la última línea de «auto.presentViewController» para demostrar su alerta.

    Espero que funcione 😉

    • Gracias por contestar! Me gustaría tener un .Cancel botón.
    • Estuve buscando en la documentación, pero no pude encontrar nada acerca de la aceptación de valores null de que el controlador de parámetros. Pero parece como que es seguro pasar de nil.

Dejar respuesta

Please enter your comment!
Please enter your name here