In Swift 4.2 and Xcode 10
Methode 1 :
EINFACHE ALERT
let alert = UIAlertController(title: "Ihr Titel", message: "Ihre Nachricht", preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default, handler: { action in
})
alert.addAction(ok)
let cancel = UIAlertAction(title: "Abbrechen", style: .default, handler: { action in
})
alert.addAction(cancel)
DispatchQueue.main.async(execute: {
self.present(alert, animated: true)
})
Methode 2 :
ALERT MIT GETEILTER KLASSE
Wenn Sie den geteilten Klassenstil möchten (einmal schreiben, überall verwenden)
import UIKit
class SharedClass: NSObject {//Dies ist eine gemeinsame Klasse
static let sharedInstance = SharedClass()
//Alert anzeigen
func alert(view: UIViewController, title: String, message: String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .default, handler: { action in
})
alert.addAction(defaultAction)
DispatchQueue.main.async(execute: {
view.present(alert, animated: true)
})
}
private override init() {
}
}
Rufen Sie jetzt das Alert wie folgt überall auf
SharedClass.sharedInstance.alert(view: self, title: "Ihr Titel hier", message: "Ihre Nachricht hier")
Methode 3 :
PRÄSENTIEREN EINES ALERTS ÜBER ALLEN FENSTERN
Wenn Sie einen Alert über allen Ansichten präsentieren möchten, verwenden Sie diesen Code
func alertWindow(title: String, message: String) {
DispatchQueue.main.async(execute: {
let alertWindow = UIWindow(frame: UIScreen.main.bounds)
alertWindow.rootViewController = UIViewController()
alertWindow.windowLevel = UIWindowLevelAlert + 1
let alert2 = UIAlertController(title: title, message: message, preferredStyle: .alert)
let defaultAction2 = UIAlertAction(title: "OK", style: .default, handler: { action in
})
alert2.addAction(defaultAction2)
alertWindow.makeKeyAndVisible()
alertWindow.rootViewController?.present(alert2, animated: true, completion: nil)
})
}
Funktionsaufruf
SharedClass.sharedInstance.alertWindow(title:"Dies ist Ihr Titel", message:"Dies ist Ihre Nachricht")
Methode 4 :
Alert mit Erweiterung
extension UIViewController {
func showAlert(withTitle title: String, withMessage message:String) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
let ok = UIAlertAction(title: "OK", style: .default, handler: { action in
})
let cancel = UIAlertAction(title: "Abbrechen", style: .default, handler: { action in
})
alert.addAction(ok)
alert.addAction(cancel)
DispatchQueue.main.async(execute: {
self.present(alert, animated: true)
})
}
}
Rufen Sie jetzt so auf
//Rufen Sie die showAlert-Funktion in Ihrer Klasse auf
@IBAction func onClickAlert(_ sender: UIButton) {
showAlert(withTitle:"Ihr Titel hier", withMessage: "Ihre benutzerdefinierte Nachricht hier")
}
Methode 5 :
ALERT MIT TEXTFELDERN
Wenn Sie Textfelder zum Alert hinzufügen möchten.
//Globale Variablen
var name:String?
var login:String?
//Rufen Sie diese Funktion wie folgt auf: alertWithTF()
//Fügen Sie Textfelder zum Alert hinzu
func alertWithTF() {
let alert = UIAlertController(title: "Login", message: "Benutzernamen & Passwort eingeben", preferredStyle: .alert)
// Login-Schaltfläche
let loginAction = UIAlertAction(title: "Einloggen", style: .default, handler: { (action) -> Void in
// Text der Textfelder abrufen
let usernameTxt = alert.textFields![0]
let passwordTxt = alert.textFields![1]
//Weisen Sie die Textfelder für unseren globalen Variablen zu
self.name = usernameTxt.text
self.login = passwordTxt.text
print("BENUTZERNAME: \(self.name!)\nPASSWORT: \(self.login!)")
})
// Abbrechen-Schaltfläche
let cancel = UIAlertAction(title: "Abbrechen", style: .destructive, handler: { (action) -> Void in })
//1 Textfeld für Benutzername
alert.addTextField { (textField: UITextField) in
textField.placeholder = "Benutzernamen eingeben"
//Wenn erforderlich, geben Sie Tastaturtyp, Delegierte, Textgröße, Schrift usw. an...
//Zum Beispiel:
textField.keyboardType = .default
}
//2. Textfeld für Passwort
alert.addTextField { (textField: UITextField) in
textField.placeholder = "Passwort eingeben"
textField.isSecureTextEntry = true
}
// Aktionen hinzufügen
alert.addAction(loginAction)
alert.addAction(cancel)
self.present(alert, animated: true, completion: nil)
}
Methode 6:
Alert in SharedClass mit Erweiterung
//Das ist Ihre gemeinsame Klasse
import UIKit
class SharedClass: NSObject {
static let sharedInstance = SharedClass()
//Hier Ihren Code schreiben....
private override init() {
}
}
//Alert-Funktion in der gemeinsamen Klasse
extension UIViewController {
func showAlert(title: String, msg: String) {
DispatchQueue.main.async {
let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
}
Rufen Sie jetzt direkt so auf
self.showAlert(title: "Ihr Titel hier...", msg: "Ihre Nachricht hier...")
Methode 7:
Alert ohne gemeinsame Klasse mit Erweiterung in separater Klasse für Alert.
Erstellen Sie eine neue Swift-Klasse und import UIKit
. Kopieren und fügen Sie den folgenden Code ein.
//Dies ist Ihre neue Swift-Klassen-Datei
import UIKit
import Foundation
extension UIAlertController {
class func alert(title:String, msg:String, target: UIViewController) {
let alert = UIAlertController(title: title, message: msg, preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default) {
(result: UIAlertAction) -> Void in
})
target.present(alert, animated: true, completion: nil)
}
}
Rufen Sie jetzt die Alert-Funktion in all Ihren Klassen auf (Einzeilig).
UIAlertController.alert(title:"Titel", msg:"Nachricht", target: self)
Wie ist es....