161 votes

iOS SwiftUI: pop ou fermer la vue par programme

Je n’ai trouvé aucune référence sur les moyens de faire un pop ou un rejet par programme de ma vue présentée avec SwiftUI.

Il me semble que la seule façon est d’utiliser l’action slide dow déjà intégrée pour le modal (et quoi / comment si je veux désactiver cette fonctionnalité?), et le bouton Précédent pour la pile de navigation.

Quelqu’un connaît-il une solution? Savez-vous s’il s’agit d’un bug ou s’il restera comme ça?

189voto

Chuck H Points 406

Cet exemple utilise le nouvel environnement var documenté dans les notes de mise à jour bêta 5, qui utilisait une propriété value. Il a été modifié dans une version bêta ultérieure pour utiliser une propriété wrappedValue. Cet exemple est maintenant à jour pour la version GM. Ce même concept fonctionne exactement pour rejeter les vues modales présentées avec le modificateur .sheet.

121voto

Prashant Gaikwad Points 291

SwiftUI Xcode Bêta 5

Tout d’abord, déclarez le @Environment qui a une méthode de rejet que vous pouvez utiliser n’importe où pour fermer la vue.

23voto

MScottWaller Points 81

Il existe maintenant un moyen d’afficher par programme un NavigationView, si vous le souhaitez. C’est en version bêta 5. Notez que vous n’avez pas besoin du bouton Précédent. Vous pouvez déclencher par programme la propriété showSelf dans le DetailView comme vous le souhaitez. Et vous n’avez pas besoin d’afficher le texte « Push » dans le maître. Cela pourrait être un EmptyView(), créant ainsi une suite invisible.

7voto

Dan Bodnar Points 478

Sinon, si vous ne souhaitez pas le faire par programmation à partir d’un bouton, vous pouvez émettre à partir du modèle de vue chaque fois que vous avez besoin d’un pop. Abonnez-vous à un @Published qui modifie la valeur chaque fois que l’enregistrement est effectué.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X