566 Stimmen

Wie erstelle ich ein UIAlertView in Swift?

Ich habe daran gearbeitet, ein UIAlertView in Swift zu erstellen, aber aus irgendeinem Grund gelingt es mir nicht, die Anweisung richtig zu machen, weil ich diesen Fehler bekomme:

Konnte keine Überladung für 'init' finden, die die mitgelieferten Argumente akzeptiert

So habe ich es geschrieben:

let button2Alert: UIAlertView = UIAlertView(title: "Titel", message: "Nachricht",
                     delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)

Dann rufe ich es so auf:

button2Alert.show()

Im Moment stürzt es ab und ich scheine einfach nicht die Syntax richtig hinzubekommen.

3voto

SWIFT 4 : Erstellen Sie einfach eine Erweiterung für UIViewController wie folgt:

extension UIViewController {        
    func showSuccessAlert(withTitle title: String, andMessage message:String) {
        let alert = UIAlertController(title: title, message: message,
                                  preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: "OK".localized, style:
        UIAlertAction.Style.default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    }
}

Rufen Sie nun in Ihrem ViewController die obige Funktion direkt auf, als ob sie von UIViewController bereitgestellt wird.

yourViewController.showSuccessAlert(withTitle: 
      "IhrTitel", andMessage: "IhreBenutzerdefinierteNachricht")

2voto

Sagar Sangani Punkte 287

Versuchen Sie dies. Fügen Sie den folgenden Code in die Schaltfläche ein.

let alert = UIAlertController(title: "Ihr_Titel_Text", message: "Ihre_MSG", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Ihr_Text", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated:true, completion: nil)

2voto

Pratyush Pratik Punkte 643

// Benutzerdefinierte Klasse für UIAlertView

//MARK:- MODULE
import Foundation
import UIKit

//MARK:- KLASSE
class Alert : NSObject{

static let shared = Alert()

var okAction : AlertSuccess?
typealias AlertSuccess = (()->())?
var alert: UIAlertController?

/** anzeigen */
public func show(title : String?, message : String?, viewController : UIViewController?, okAction : AlertSuccess = nil) {

    let version : NSString = UIDevice.current.systemVersion as NSString
    if  version.doubleValue >= 8 {
        alert = UIAlertController(title: title, message: message, preferredStyle:.alert)
        alert?.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction) in

            if let okAction = okAction {
                okAction()
            }
        }))
        viewController?.present(alert ?? UIAlertController(), animated:true, completion:nil);
    }
}

/** showWithCancelAndOk */
public func showWithCancelAndOk(title : String, okTitle : String, cancelTitle : String, message : String, viewController : UIViewController?, okAction : AlertSuccess = nil, cancelAction : AlertSuccess = nil) {
    let version:NSString = UIDevice.current.systemVersion as NSString;

    if  version.doubleValue >= 8 {
        alert = UIAlertController(title: title, message: message, preferredStyle:.alert)

        alert?.addAction(UIAlertAction(title: cancelTitle, style: .default, handler: { (action: UIAlertAction) in

            if let cancelAction = cancelAction {
                cancelAction()
            }
        }))
        alert?.addAction(UIAlertAction(title: okTitle, style: .default, handler: { (action: UIAlertAction) in

            if let okAction = okAction {
                okAction()
            }
        }))
        viewController?.present(alert!, animated:true, completion:nil);
    }
}

/** showWithTimer */
public func showWithTimer(message : String?, viewController : UIViewController?) {

    let version : NSString = UIDevice.current.systemVersion as NSString
    if  version.doubleValue >= 8 {
        alert = UIAlertController(title: "", message: message, preferredStyle:.alert)
        viewController?.present(alert ?? UIAlertController(), animated:true, completion:nil)
        let when = DispatchTime.now() + 1
        DispatchQueue.main.asyncAfter(deadline: when){
            self.alert?.dismiss(animated: true, completion: nil)
        }
    }
}
}

Verwendung:-

Alert.shared.show(title: "Keine Internetverbindung", message: "Die Internetverbindung scheint offline zu sein.", viewController: self) //ohne ok Aktion

Alert.shared.show(title: "Keine Internetverbindung", message: "Die Internetverbindung scheint offline zu sein.", viewController: self, okAction: {
                            //ok Aktion
                        }) // mit ok Aktion

Alert.shared.show(title: "Keine Internetverbindung", message: "Die Internetverbindung scheint offline zu sein.", viewController: self, okAction: {
                            //ok Aktion 
}, cancelAction: {
 //Abbrechen Aktion
}) //mit Abbrechen und ok Aktion

Alert.shared.showWithTimer(message: "Dies ist ein Alarm mit Timer", viewController: self) //mit Timer

1voto

Für Version 13.0 und höher Mit SceneDelegate benutzen

Für alle Arten von Klassen

static func showWindowAlert(alertMessage: String, inVC:UIViewController) {
        DispatchQueue.main.async(execute: {
            guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
                let sceneDelegate = windowScene.delegate as? SceneDelegate
              else {
                return
              }
            sceneDelegate.window?.rootViewController = inVC
            sceneDelegate.window?.windowLevel = UIWindow.Level.alert + 1

            let alert2 = UIAlertController(title: App_Name, message: alertMessage, preferredStyle: .alert)
            let defaultAction2 = UIAlertAction(title: "OK", style: .default, handler: { action in
            })
            alert2.addAction(defaultAction2)

            sceneDelegate.window?.makeKeyAndVisible()

            sceneDelegate.window?.rootViewController?.present(alert2, animated: true, completion: nil)
        })
    }

1voto

gabriel_vincent Punkte 1211

SwiftUI auf Swift 5.x und Xcode 11.x

import SwiftUI

struct ContentView: View {

    @State private var isShowingAlert = false

    var body: some View {
        VStack {
            Button("Ein Button") {

                self.isShowingAlert.toggle()
            }
            .alert(isPresented: $isShowingAlert) { () -> Alert in
                Alert(
                    title: Text("Alert"),
                    message: Text("Dies ist ein Alert"),
                    dismissButton:
                        .default(
                            Text("OK"),
                            action: {
                                print("Alert wird geschlossen")
                            }
                        )
                )
            }

        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X