Confirmer le bouton retour sur UINavigationController
Je suis en utilisant le storyboard
pour mon application qui est à l'aide de UINavigationController
. Je voudrais ajouter une boîte de dialogue de confirmation par défaut du bouton de retour de sorte que l'utilisateur ne se déconnectent pas accidentellement. Est-il possible de faire cela? J'ai constaté que je ne peut pas simplement d'accéder à l'arrière du bouton lorsqu'il est créé automatiquement par le UINavigationController
.
Des idées?
source d'informationauteur mtmurdock
Vous devez vous connecter pour publier un commentaire.
Malheureusement, vous ne pouvez pas intercepter le bouton de retour de cette façon. Le plus proche fac-similé est d'utiliser votre propre
UIBarButtonItem
ensemble de lanavigationItem.leftBarButtonItem
et de définir une action pour afficher votre alerte etc. J'ai eu un graphiste bouton créer des images qui ressemblent à la norme bouton de retour.Que d'un côté, j'avais besoin d'intercepter le bouton de retour pour une autre raison. Je vous invite à reconsidérer ce choix de conception. Si vous présentez une vue où les utilisateurs peuvent faire des modifications et que vous souhaitez qu'ils aient le choix d'enregistrer ou d'annuler mon humble avis il est préférable d'utiliser "Enregistrer" et "Annuler" boutons vs un bouton de retour avec une alerte. Les alertes sont généralement ennuyeux. Sinon, il est clair que les changements de vos utilisateurs se sont engagés à le temps qu'ils font. Alors la question est discutable.
Comment j'ai travaillé autour de cette situation est par définition de la
leftBarButtonItem
à laUIBarButtonSystemItemTrash
style (en les rendant instantanément évident qu'ils vont supprimer le projet d'article) et l'ajout d'une alerte en vue de confirmer la suppression. Parce que vous définissez une coutumeleftBarButtonItem
il ne se comporte pas comme un bouton de retour, de sorte qu'il ne sera pas automatiquement pop la vue!Dans le code:
C'est vraiment aussi simple que cela! Je ne vois pas de gros problème, tbh :p
J'ai du ajouter un avertissement, cependant; ce faisant des sauts de la navigation par défaut le comportement et apple pourraient ne pas aimer les développeurs à faire cela. Je n'ai pas soumis de toutes les applications (encore) avec cette fonction, donc je ne sais pas si apple va permettre à votre application dans le magasin lors de cette opération, mais être averti 😉
Mise à JOUR: Bonne nouvelle, tout le monde! En attendant, j'ai publié un app (Appcident) de l'App Store avec ce comportement en place et Apple ne semble pas à l'esprit.
En fait, vous pouvez trouver le bouton afficher et ajouter des UITapGestureRecognizer.
Si vous regardez cette image:
En utilisant ce code:
Vous pouvez comprendre comment faire pour trouver le point de Vue de la touche Retour. Il est toujours la dernière dans les sous-vues de tableau de la navigationbar.
J'ai donc utilisé:
Appuyant sur le bouton de retour et voilà:
Voici une solution de contournement: (Testé sur iOS10 et 11)
Appuyez sur ajouter geste de reconnaissance de la barre de navigation:
cancelsTouchesInView = true assure que le bouton retour n'a pas l'événement tactile.
Gérer le geste:
Au lieu d'utiliser 100 nombre magique vous pouvez trouver à la vue contenant le bouton arrière et utiliser la monture n'détecter les touches.
Voici ce que vous devez faire pour facilement personnaliser un bouton de retour qui reproduit l'apparence par défaut du bouton de retour sur iPhone et iPad, avec le code écrit explicitement parce que j'imagine que je vais venir ici à la recherche de ce nouveau à un certain point.
Mettre les fonctions suivantes, quelque part dans la mise en œuvre (.m) fichier de la UIViewController avec un UINavigationController, puis dans le viewDidLoad exécuter
[self setupBackButton];
Tout ce que vous souhaitez faire avec le bouton de retour, mettre dans le
backButtonPressed
fonction.Pour obtenir le exacte bouton png à partir d'iOS, je recommande la UIKit Illustration Extracteur. Après l'exécution du projet et d'enregistrer les images sur l'iPad Retina simulateur suivie par l'iPad non-retina simulateur, regardez pour les titres de la "Commune" dossier dans le simulateur de dossier qui apparaît sur votre bureau. Les noms de fichier "UINavigationBar...de Retour(@2x).png" et "UINavigationBar...BackPressed(@2x).png" sont ce que vous voulez.
Je suis aussi à la fixation de la par défaut iOS (iPhone et iPad) arrière bouton de la barre d'png utilisé dans le code ci-dessus comme une commodité. Notez qu'avec les mises à jour iOS, le regard de la valeur par défaut de retour barbuttonitems peut changer...