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.

1voto

Zorayr Punkte 21896

Hier ist ein lustiges Beispiel in Swift:

private func presentRandomJoke() {
  if let randomJoke: String = jokesController.randomJoke() {
    let alertController: UIAlertController = UIAlertController(title:nil, message:randomJoke, preferredStyle: UIAlertControllerStyle.Alert)
    alertController.addAction(UIAlertAction(title:"Fertig", style:UIAlertActionStyle.Default, handler:nil))
    presentViewController(alertController, animated:true, completion:nil)
  }
}

1voto

indrajit Punkte 265

Unten finden Sie den wiederverwendbaren Code für das Benachrichtigungsfenster und das Aktionenblatt. Schreiben Sie einfach eine Zeile, um überall in der Anwendung eine Benachrichtigung anzuzeigen

class AlertView{

    static func show(title:String? = nil,message:String?,preferredStyle: UIAlertControllerStyle = .alert,buttons:[String] = ["Ok"],completionHandler:@escaping (String)->Void){
        let alert = UIAlertController(title: title, message: message, preferredStyle: preferredStyle)

        for button in buttons{

            var style = UIAlertActionStyle.default
            let buttonText = button.lowercased().replacingOccurrences(of: " ", with: "")
            if buttonText == "cancel"{
                style = .cancel
            }
            let action = UIAlertAction(title: button, style: style) { (_) in
                completionHandler(button)
            }
            alert.addAction(action)
        }

        DispatchQueue.main.async {
            if let app = UIApplication.shared.delegate as? AppDelegate, let rootViewController = app.window?.rootViewController {
                rootViewController.present(alert, animated: true, completion: nil)
            }

        }
    }
}

Verwendung :

class ViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {
        AlertView.show(title: "Alert", message: "Sind Sie sicher?", preferredStyle: .alert, buttons: ["Ja","Nein"]) { (button) in
            print(button)
        }
    }

}

1voto

Hitesh Chauhan Punkte 1420
  // UIAlertView ist veraltet. Verwenden Sie UIAlertController
  // title = Titel des Alert Views
  // message = Alert-Meldung, die angezeigt werden soll
  // Durch Tippen auf "OK" wird der Alert View ausgeblendet.

UIAlertView(title: "Alert", message: "Geben Sie hier eine Nachricht ein.", delegate: nil, cancelButtonTitle: "OK").show()

1voto

Keshav Gera Punkte 9684

auf IOS 9 kannst du das tun

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

1voto

Shanmugasundharam Punkte 2074

Der alte Weg: UIAlertView

let alertView = UIAlertView(title: "Standardstil", message: "Ein standardmäßiger Hinweis.", delegate: self, cancelButtonTitle: "Abbrechen", otherButtonTitles: "OK")
alertView.alertViewStyle = .Default
alertView.show()

// MARK: UIAlertViewDelegate

func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
switch buttonIndex {

// ...
}
}

Der neue Weg: UIAlertController

let alertController = UIAlertController(title: "Standardstil", message: "Ein standardmäßiger Hinweis.", preferredStyle: .Alert)

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

let OKAction = UIAlertAction(title: "OK", style: .Default) { (action) in
// ...
}
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true) {
// ...
}

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