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.

5voto

Alvin George Punkte 13610

Ich habe noch einen Trick. Angenommen, Sie haben 5 Klassen, bei denen ein Logout-Alert angewendet werden soll. Versuchen Sie es mit einer schnellen Klassenerweiterung.

Datei- Neu- Swift-Klasse- Benennen Sie diese.

Fügen Sie Folgendes hinzu:

public extension UIViewController
{

    func makeLogOutAlert()
    {
        var refreshAlert = UIAlertController(title: "Ausloggen", message: "Sind Sie sicher, dass Sie sich ausloggen möchten? ", preferredStyle: UIAlertControllerStyle.Alert)

        refreshAlert.addAction(UIAlertAction(title: "Bestätigen", style: .Default, handler: { (action: UIAlertAction!) in
            self.navigationController?.popToRootViewControllerAnimated(true)
        }))

        refreshAlert.addAction(UIAlertAction(title: "Abbrechen", style: .Default, handler: { (action: UIAlertAction!) in
            refreshAlert.dismissViewControllerAnimated(true, completion: nil)
        }))

        presentViewController(refreshAlert, animated: true, completion: nil)
    }
}

Implementierung mit: self.makeLogOutAlert(). Hoffentlich hilft es.

5voto

Jayesh Miruliya Punkte 3229
    class Vorschau: UIViewController , UIAlertViewDelegate
    {
        @IBAction func MehrBtnGeklickt(sender: AnyObject)
        {
            var mehrAlert = UIAlertView(title: "Foto", message: "", delegate: self, cancelButtonTitle: "Nein danke!", otherButtonTitles: "Bild speichern", "E-Mail", "Facebook", "Whatsapp" )
            mehrAlert.show()
            mehrAlert.tag = 111;
        }

        func alertView(alertView: UIAlertView, didDismissWithButtonIndex buttonIndex: Int)
        {
            if alertView.tag == 111
            {
                if buttonIndex == 0
                {
                    println("Nein danke!")
                }
                else if buttonIndex == 1
                {
                    println("Bild speichern")
                }
                else if buttonIndex == 2
                {
                    println("E-Mail")
                }
                else if buttonIndex == 3
                {
                    println("Facebook")
                }
                else if buttonIndex == 4
                {
                    println("Whatsapp")
                }
            }
        }
    }

4voto

diego Punkte 409

Oder einfach das machen

        let alert = UIAlertController(title: "Alert", message: "Erfolgreich gespeichert", preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default, handler: nil))
        self.present(alert, animated: true, completion: nil)

4voto

Nicolas Miari Punkte 15521

Ich habe den folgenden UIAlertView Initialisierungscode ohne Fehler kompilieren lassen können (ich denke, der letzte, variadische Teil ist vielleicht knifflig). Aber ich musste sicherstellen, dass die Klasse von self (die ich als Delegierten übergebe) das UIAlertViewDelegate Protokoll annahm, damit die Kompilierfehler verschwanden:

let alertView = UIAlertView(
                  title: "Mein Titel",
                  message: "Meine Nachricht",
                  delegate: self,
                  cancelButtonTitle: "Abbrechen",
                  otherButtonTitles: "OK"
                )

Übrigens, das war der Fehler, den ich bekommen habe (mit Xcode 6.4):

Kann keinen Initialisierer für Typ 'UIAlertView' finden, der eine Argumentliste des Typs '(title: String, message: String, delegate: MeinViewController, cancelButtonTitle: String, otherButtonTitles: String)' akzeptiert

Wie andere bereits erwähnt haben, sollten Sie zu UIAlertController wechseln, wenn Sie iOS 8.x+ unterstützen können. Um iOS 7 zu unterstützen, verwenden Sie den oben genannten Code (iOS 6 wird von Swift nicht unterstützt).

4voto

Mr.Javed Multani Punkte 11069
 let alertController = UIAlertController(title: "Foto auswählen", message: "Wählen Sie mindestens ein Foto aus", preferredStyle: .alert)
    let action1 = UIAlertAction(title: "Von Foto", style: .default) { (action) in
        print("Standard wurde gedrückt.....")
    }
    let action2 = UIAlertAction(title: "Abbrechen", style: .cancel) { (action) in
        print("Abbrechen wurde gedrückt......")
    }
    let action3 = UIAlertAction(title: "Neu klicken", style: .default) { (action) in
        print("Zerstörend wurde gedrückt....")

    }
    alertController.addAction(action1)
    alertController.addAction(action2)
    alertController.addAction(action3)
    self.present(alertController, animated: true, completion: nil)

}

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