Changement de vue via une ToolbarView

RocouRocou Membre
mai 2023 modifié dans API SwiftUI #1

Bonjour,

J'ai installé une "ToolbarView" sur une application afin de changer de vue au clic sur une icône.
Évidemment chaque vue est réinitialisée à chaque affichage.
Or j'aimerais bien conserver le contenu des TextField quand je passe d'une vue à l'autre.
J'imagine qu'il faut garder les variables associées aux TextField quelque part mais tout ce que j'ai pu tester, ne fonctionne pas, les vues sont toujours réinitialisées. (j'ai bien entendu interrogé GPT4 sans succès)

Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    mai 2023 modifié #2

    On en revient au fameux découpage Modèle-Vue-Contrôleur mais à la sauce SwiftUI. En gros, c'est le modèle métier qui doit conserver les données, et la vue qui est synchronisée dessus. Ainsi quand tu vas changer de page, les vues sont recréées mais comme elles sont alimentées par le modèle — qui a gardé son état — elles vont reprendre les valeurs qui y sont stockées.

    En pratique, ça veut dire:

    • ne pas stocker les valeurs métier dans des @State
    • avoir un objet métier, typiquement une class qui se conforme à ObservableObject
    • dans cette classe, déclarer les propriétés en @Published

    Une problématique que tu vas avoir est où instancier les objets métier. Il y a plusieurs solutions:

    • dans la Scene (ou AppDelegate) puis passer aux vues
    • utiliser @Environment (solution classique en SwiftUI mais que je n'ai pas pratiquée)
    • utiliser un injecteur de dépendances, comme Resolver

    Bon courage, les choses difficiles en SwiftUI commencent! ChatGPT devrait se montrer plus utile maintenant que tu as les mots-clés.

  • Bonjour,

    Je ne vois pas bien où est le problème.
    Dans le viewdidload ou wiewwillappear du viewcontroller, tu peux fixer le texte des textfield comme tu veux.
    As-tu essayé cela ?

  • RocouRocou Membre

    Merci @Céroce pour les pistes ;-)

    @Eric P. je ne suis pas sûr de te suivre. En SwiftUI je n'ai pas l'impression que l'on conserve ces notions.

  • @Rocou a dit :
    @Eric P. je ne suis pas sûr de te suivre. En SwiftUI je n'ai pas l'impression que l'on conserve ces notions.

    Tu n'avais précisé que tu es en SwiftUI...

  • RocouRocou Membre

    @Eric P. a dit :

    @Rocou a dit :
    @Eric P. je ne suis pas sûr de te suivre. En SwiftUI je n'ai pas l'impression que l'on conserve ces notions.

    Tu n'avais précisé que tu es en SwiftUI...

    Ha oui, désolé mais j'avais tout de même posté dans la rubrique appropriée ;)

  • Ha oui, je ne fais pas toujours attention à la rubrique.

Connectez-vous ou Inscrivez-vous pour répondre.