He estado trabajando para crear un UIAlertView en Swift, pero por alguna razón no puedo obtener la declaración correcta porque recibo este error:
No se pudo encontrar una sobrecarga para 'init' que acepte los argumentos proporcionados
Así es como lo tengo escrito:
let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)
Entonces para llamarlo estoy usando:
button2Alert.show()
A partir de ahora está fallando y parece que no puedo entender bien la sintaxis.
ios
swift
cocoa-touch
uialertview
uialertcontroller
Oso azul
fuente
fuente
UIAlertView
yUIActionSheet
ha sido reemplazado porUIAlertController
en iOS 8, ¿has mirado esto?self
pertenece adopta el protocoloUIAlertViewDelegate
(la forma recomendada de hacerlo, en Swift, es con una extensión).Respuestas:
De la
UIAlertView
clase:En iOS 8, puedes hacer esto:
Ahora
UIAlertController
es una clase única para crear e interactuar con lo que sabíamos comoUIAlertView
syUIActionSheet
s en iOS 8.Editar: para manejar acciones:
Editar para Swift 3:
Editar para Swift 4.x:
fuente
UIAlertView
clase, y el comentario está justo encima de la declaración de la clase..Default
?Un botón
Dos botones
Tres botones
Manejo de grifos de botones
El
handler
estabanil
en los ejemplos anteriores. Puede reemplazarlonil
con un cierre para hacer algo cuando el usuario toca un botón. Por ejemplo:Notas
UIAlertAction.Style
tipos. Podrían ser todos.default
.fuente
Puede crear una alerta UIA usando el constructor estándar, pero el 'legado' parece no funcionar:
fuente
En Swift 4.2 y Xcode 10
Método 1 :
ALERTA SIMPLE
Método 2:
ALERTA CON CLASE COMPARTIDA
Si desea estilo de clase compartida (escriba una vez, use en todas partes)
Ahora llame a alertas como esta en cada vajilla
Método 3:
ALERTA ACTUAL SUPERIOR DE TODAS LAS VENTANAS
Si desea presentar una alerta en la parte superior de todas las vistas, use este código
Función de llamada
Método 4:
Alerta con extensión
Ahora llama así
Método 5:
ALERTA CON TEXTFIELDS
Si desea agregar campos de texto para alertar.
Método 6:
Alerta en SharedClass con extensión
Ahora llama directamente así
Método 7:
Alerta sin clase compartida con extensión en clase separada para alerta.
Cree una nueva clase Swift, y
import UIKit
. Copie y pegue el siguiente código.Ahora llame a la función de alerta como esta en todas sus clases (línea única).
Cómo es....
fuente
if timeInterval != 0 { if #available(iOS 10.0, *) { Timer.scheduledTimer(withTimeInterval: timeInterval, repeats: false, block: { _ in alert.dismiss(animated: true, completion: nil) }) } else { // Fallback on earlier versions } }
Click of View
Hecho con dos botones OK y Cancelar
fuente
Si está apuntando a iOS 7 y 8, necesita algo como esto para asegurarse de que está utilizando el método correcto para cada versión, porque
UIAlertView
está en desuso en iOS 8, peroUIAlertController
no está disponible en iOS 7:fuente
UIAlertView
hasta que deje de admitir iOS 7. Apple no rechazará su aplicación por eso.Con las extensiones de protocolo de Swift 2, puede crear un protocolo que proporcione una implementación predeterminada para sus controladores de vista:
ShowsAlert.swift
ViewController.swift
fuente
Mostrar UIAlertView en lenguaje rápido: -
Protocolo UIAlertViewDelegate
Mostrar UIAlertViewController en lenguaje rápido: -
fuente
Simplemente no proporcione otherButtonTitles en el constructor.
Pero sí estoy de acuerdo con Oscar, esta clase está en desuso en iOS 8, por lo que no se utilizará UIAlertView si está utilizando una aplicación solo para iOS 8. De lo contrario, el código anterior funcionará.
fuente
Encontré este
aunque no es bueno, pero funciona :)
Actualizar:
pero he encontrado en el archivo de encabezado como:
alguien puede explicar esto.
fuente
Para SWIFT4 , creo, extender
UIViewController
y crear un control de confirmación reutilizable es la forma más elegante.Puede extender lo
UIViewController
siguiente:Entonces puedes usarlo en cualquier momento:
fuente
fuente
Tengo otro truco Supongamos que tiene 5 clases donde se aplicará una alerta de cierre de sesión. Prueba con la extensión de clase swift.
File- New- Swift class- Name it.
Agregue lo siguiente:
Implementar usando: self.makeLogOutAlert (). Espero eso ayude.
fuente
Hice una clase de singleton para que sea conveniente de usar desde cualquier lugar de su aplicación: https://github.com/Swinny1989/Swift-Popups
Luego puede crear una ventana emergente con varios botones como este:
o ventanas emergentes con un solo botón como este:
fuente
Swift 3
El siguiente es un ejemplo simple de cómo crear una alerta simple con un botón con Swift 3.
En el ejemplo anterior, la devolución de llamada del identificador de la acción se ha omitido porque el comportamiento predeterminado de una vista de alerta con un botón es desaparecer cuando se hace clic en el botón.
Aquí se explica cómo crear otra acción, que se podría agregar a la alerta con "alert.addAction (action)". Los diferentes estilos son .default, .destructive y .cancel.
fuente
UIAlertView
Obtuve el siguiente código de inicialización para compilar sin errores (creo que la última parte, la variación es quizás complicada). Pero tenía que asegurarme de que la clase deself
(que paso como delegado) estaba adoptando elUIAlertViewDelegate
protocolo para que los errores de compilación desaparecieran:Por cierto, este es el error que estaba recibiendo (a partir de Xcode 6.4):
Como otros mencionaron, debe migrar a UIAlertController si puede apuntar a iOS 8.x +. Para admitir iOS 7, use el código anterior (iOS 6 no es compatible con Swift).
fuente
fuente
Puede usar esta extensión simple con n número de botones y acciones asociadas swift4 y superiores
puedes usarlo como,
fuente
La razón por la que no funciona porque algún valor que le pasó a la función no es correcto. swift no le gusta Objective-C, puede poner nulo a los argumentos que son de tipo de clase sin ninguna restricción (podría ser). El argumento otherButtonTitles se define como no opcional que su tipo no tiene (?) Al final. entonces debes pasarle un valor concreto.
fuente
Prueba esto
fuente
Use este código para mostrar una vista de alerta
Referencia: Swift Show Alert usando UIAlertController
fuente
en xcode 9
fuente
SWIFT 4: simplemente cree una extensión para UIViewController de la siguiente manera:
Ahora en su ViewController, llame directamente a la función anterior como si fueran provistas por UIViewController.
fuente
prueba esto. Poner código de abajo en el botón.
fuente
Aquí hay un ejemplo divertido en Swift:
fuente
Aquí hay una función bastante simple de AlertView en Swift:
Tienes que pasar el mensaje como una cadena donde utilizas esta función.
fuente
La vieja forma: UIAlertView
La nueva forma: UIAlertController
fuente
en iOS 9, puedes hacer esto
fuente
// Clase genérica para UIAlertView
Utilizar:-
fuente
fuente