Préférence
Rocou
Membre
Bonjour,
Je travaille sur un des livres de Paul Hudson.
Dans un des "projets", Paul montre comment ajouter une vue "Preferences".
Je cite le paragraphe:
"To get started, create a new SwiftUI view called SettingsView. Before we add any code to it, I want you to go to CowsAndBullsApp.swift so we can tell SwiftUI that this is our app’s preferences view rather than just a regular view.
Add this to the body property of the app struct: "
Settings(content: SettingsView.init)
"To be clear, your code should look like this:"
@main
struct CowsAndBullsApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
Settings(content: SettingsView.init)
}
}
Je précise qu'il y a bien un "import SwiftUI" en début de code.
Le problème est que ce code génère une erreur de compilation:
Cannot find 'SettingsView' in scope
Je ne comprends pas pourquoi.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si tu as déjà créé la vue
SettingsView
le soucis va être plutôt long à régler.Si tu n'as pas créé la vue
SettingsView
c'est parce que tu n'as pas créé la vueSettingsView
😉Je n'ai pas compris.
J'ai également tenté de suivre l'exemple d'Apple:
https://developer.apple.com/documentation/swiftui/settings
mais j'obtiens la même erreur
Il faut que tu déclares la vue
SettingsView
dans leSettingsView.swift
.Le livre dit de ne pas ajouter de code « dans la classe », pas « dans le fichier ». Il faut tout de même la déclarer/définir, mais les « ajustements » (ajouts de properties, méthodes, toute la custo de la view en bref) se feront plus tard.
Comment faire en SwiftUI pur, sans passer par le StoryBoard, pour déclarer la vue
SettingsView
?Bon, j'ai ajouté ce code dans SettingsView.swift.
Je ne comprends pas encore pourquoi il est nécessaire d'ajouter une var body mais je progresse. Merci!
C'est un protocol, et c'est une variable obligatoire. Cf la doc de
View
.C'est parce que
SettingsView
est déclarée comme implémentant le protocoleView
. Ce protocole impose de déclarer une propriétébody
qui retourne un sujet de type implémentant lui même le protocolView
.T'as pas besoin d'avoir compris tout ce que je viens d'écrire, ça va être expliqué dans la suite du bouquin d'une manière ou d'une autre. Pour le moment c'est pas important de comprendre pourquoi tu dois juste savoir qu'il faut le faire 😉