webentwicklung-frage-antwort-db.com.de

Swift Alert-Ansicht (iOS8) mit OK und Abbrechen-Schaltfläche, welche Schaltfläche getippt

Ich habe eine Benachrichtigungsansicht in Xcode, die in Swift) geschrieben ist, und möchte bestimmen, welche Schaltfläche der Benutzer ausgewählt hat (dies ist ein Bestätigungsdialog), um nichts zu tun oder etwas auszuführen.

@IBAction func pushedRefresh(sender: AnyObject) {
        var refreshAlert = UIAlertView()
        refreshAlert.title = "Refresh?"
        refreshAlert.message = "All data will be lost."
        refreshAlert.addButtonWithTitle("Cancel")
        refreshAlert.addButtonWithTitle("OK")
        refreshAlert.show()
    }

Ich benutze wahrscheinlich die Tasten falsch, bitte korrigieren Sie mich, da dies alles neu für mich ist.

Danke!

95
B_s

Wenn Sie iOS8 verwenden, sollten Sie UIAlertController verwenden - UIAlertView ist veraltet .

Hier ist ein Beispiel, wie man es benutzt:

var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert)

refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
  print("Handle Ok logic here")
  }))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
  print("Handle Cancel Logic here")
  }))

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

Wie Sie sehen können, behandeln die Block-Handler für die UIAlertAction das Drücken der Taste. Ein großartiges Tutorial ist hier (obwohl dieses Tutorial nicht mit Swift geschrieben wurde): http://hayageek.com/uialertcontroller-example-ios/

Swift 3 Update:

let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.alert)

refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in
    print("Handle Ok logic here")
}))

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in
    print("Handle Cancel Logic here")
}))

present(refreshAlert, animated: true, completion: nil)
288
var refreshAlert = UIAlertController(title: "Log Out", message: "Are You Sure to Log Out ? ", preferredStyle: UIAlertControllerStyle.Alert)

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

refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in

    refreshAlert .dismissViewControllerAnimated(true, completion: nil)


}))

presentViewController(refreshAlert, animated: true, completion: nil)
17
A.G

Sie können dies einfach mit UIAlertController tun

let alertController = UIAlertController(
       title: "Your title", message: "Your message", preferredStyle: .alert)
let defaultAction = UIAlertAction(
       title: "Close Alert", style: .default, handler: nil)
//you can add custom actions as well 
alertController.addAction(defaultAction)

present(alertController, animated: true, completion: nil)

.

Referenz: iOS Show Alert

3
Shaba Aafreen

Möglicherweise möchten Sie SCLAlertView verwenden, alternativ für UIAlertView oder UIAlertController .

UIAlertController funktioniert nur unter iOS 8.x oder höher. SCLAlertView ist eine gute Option, um ältere Versionen zu unterstützen.

Github um die Details zu sehen

beispiel:

let alertView = SCLAlertView()
alertView.addButton("First Button", target:self, selector:Selector("firstButton"))
alertView.addButton("Second Button") {
    print("Second button tapped")
}
alertView.showSuccess("Button View", subTitle: "This alert view has buttons")
0
Soon Khai