• Home
  • Nous contacter

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab
Mobile

Swift alert enlèvement

Aujourd’hui, j’ai décidé de débuter un petite série de tips sur le petit nouveau (c’est encore un enfant cela fait seulement 1 an qu’il est disponible en version publique pour le développement d’applications iOS), je veux bien sur parler de swift.

Alors pour commencer simplement, nous allons juste afficher une alert à l’utilisateur. Pour vous donner des tips, je considère que vous savez utiliser Xcode et créer un projet.

Créer une alert est très simple avec swift, n’importe quelle recherche google vous fournira le code suivant

let prompt = UIAlertController(title: "Alert", message: "à malibu", preferredStyle: UIAlertControllerStyle.Alert)
prompt.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
presentViewController(prompt, animated: true, completion: nil)

 

Capture d’écran 2015-06-23 à 12.47.25

Pour avoir un callback sur le click du bouton de l’alert il faut rajouter un handler (anonyme par exemple)

prompt.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { action in
// Ici l'utilisateur a cliqué (ou bien quitté l'application parce qu'il a pas d'autre choix pour sortir de l'alert haha)
}))

 

Bon, jusqu’ici, rien de compliqué, mais ce code ne fonctionne pas, enfin si mais NON! Parce que si vous utilisez la version iOS 7, et bien UIAlertController n’existe pas ! Donc l’application crash a l’appel de cette méthode.
C’est plutôt drôle, beaucoup d’applications crash de temps en temps, mais la plupart des crashs ne sont pas dû à une utilisation de ressources extrême de l’appareil, mais plutôt a de petits bugs comme cela.

Pour faire simple 1 nil = 1 crash

Donc voici comment gérer le retrocompatibilité

// if "UIAlertController" exist
if objc_getClass("UIAlertController") != nil {
// On execute le code qui va bien
}else {
// On fait quoi ?
}

 

Il ne nous reste plus qu’à faire fonctionner notre alert sous iOS 7

}else {
let alert = UIAlertView()
alert.title = "Alert"
alert.message = "à malibu"
alert.addButtonWithTitle("Ok")
alert.show()
}

 

Enfin pour finir parlons des fonctions anonymes ou « Block » en swift, la class UIAlertView ne possède pas de callback anonyme. Mais nous ne sommes pas les seuls à vouloir utiliser cette option.

Ajouter à votre projet les classes suivantes (https://github.com/ryanmaxwell/UIAlertView-Blocks), soit UIAlertView+Blocks.m et UIAlertView+Blocks.h.

Comme nous utilisons swift penser bien a importer le fichier UIAlertView+Blocks.h dans votre « briding-header.h », car il s’agit d’un fichier objective C.

Maintenant, nous pouvons utiliser l’attribut « tapBlock » d’UIAlertView

alert.addButtonWithTitle("Ok")
alert.tapBlock = {value in
// TAADAAAA
}
alert.show()

 

C’est fini, pensez bien à utiliser cette démarche en début de projet cela vous évitera plein de crash !
À la prochaine pour un autre tip.

06/07/2015 18 MIN READ BY: Nicolas LABBE 0 COMMENT
SHARE
LIRE LA SUITE

Nicolas LABBE

Si c’est stupide mais que ça marche, ce n’est pas stupide.

Wordpress - Un formulaire de login custom en Ajax

Concevoir le web comme les jeux vidéos : les étapes de conception

VOUS POURRIEZ AIMER

Framework Frontend Mobile Développer une application pour pebble Time

Mobile Développer une application mobile avec React Native

Mobile La détection de terminaux mobiles, méthodes et usages

Mobile Optimisations Phonegap / Cordova

Mobile Application mobile : Native ou hybride ?

Mobile Cordova / Phonegap: icônes et splashscreen sous Xcode 5

A propos d’Adfab

Nous sommes un studio de production digitales et d’innovation digitales au service des agences et des annonceurs
Nous recherchons le scintillement dans les regards et le plaisir de réalisations sur-performantes
Nous sommes techno-agnostiques
Nous sommes Adfab

Le blog d'Adfab
Copyright © 2018 Adfab Connect