web-dev-qa-db-fra.com

Swift affichage des alertes (iOS8) avec le bouton OK et le bouton d'annulation, bouton activé

J'ai une vue d'alerte dans Xcode écrite en Swift et j'aimerais déterminer quel bouton l'utilisateur a sélectionné (c'est une boîte de dialogue de confirmation) pour ne rien faire ou pour exécuter quelque chose. Actuellement j'ai:

@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()
    }

J'utilise probablement mal les boutons, corrigez-moi s'il vous plaît car tout cela est nouveau pour moi.

Je vous remercie!

95
B_s

Si vous utilisez iOS8, vous devriez utiliser UIAlertController - UIAlertView est obsolète .

Voici un exemple d'utilisation:

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)

Comme vous pouvez le voir, les gestionnaires de blocs pour UIAlertAction gèrent les pressions sur les boutons. Un excellent tutoriel est ici (bien que ce tutoriel n’ait pas été écrit avec Swift): http://hayageek.com/uialertcontroller-example-ios/

Mise à jour de Swift 3:

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
Michael Wildermuth
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

Vous pouvez facilement le faire en utilisant UIAlertController

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)

.

Référence: iOS Show Alert

3
Shaba Aafreen

Mis à jour pour Swift 3:

// définition de la fonction:

@IBAction func showAlertDialog(_ sender: UIButton) {
        // Declare Alert
        let dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to Logout?", preferredStyle: .alert)

        // Create OK button with action handler
        let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in
             print("Ok button click...")
             self.logoutFun()
        })

        // Create Cancel button with action handlder
        let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in
            print("Cancel button click...")
        }

        //Add OK and Cancel button to dialog message
        dialogMessage.addAction(ok)
        dialogMessage.addAction(cancel)

        // Present dialog message to user
        self.present(dialogMessage, animated: true, completion: nil)
    }

// définition de la fonction logoutFun ():

func logoutFun()
{
    print("Logout Successfully...!")
}
3
Kiran jadhav

Vous voudrez peut-être envisager d’utiliser SCLAlertView , alternative à UIAlertView ou UIAlertController .

UIAlertController ne fonctionne que sur iOS 8.x ou supérieur, SCLAlertView est une bonne option pour prendre en charge une version plus ancienne.

github pour voir les détails

exemple:

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