Я пытаюсь передать данные через @EnvironmentObject, но это работает, только если я перехожу к следующему представлению через NavigationButton, однако я хочу представить следующее представление модально (PresentationButton)
struct ContentView : View {
@EnvironmentObject var settings: UserSettings
var body: some View {
NavigationView {
VStack {
// A button that writes to the environment settings
Button(action: {
self.settings.score += 1
}) {
Text("Increase Score")
}
NavigationButton(destination: DetailView()) {
Text("Show Detail View")
}
}
}
}
}
struct DetailView: View {
@EnvironmentObject var settings: UserSettings
var body: some View {
// A text view that reads from the environment settings
VStack {
Text("Score: \(settings.score)")
}
}
}
Что я пытаюсь использовать:
PresentationButton( Text("Show Detail View"), destination: DetailView())





Попробуйте передать привязываемый объект DetailView с помощью environmentObject:
PresentationButton(Text("Show Detail View"),
destination: DetailView().environmentObject(settings))
@SorinLica, в этом случае я думаю, что использование синглтона было бы неплохой идеей. Убедившись, что он используется как EnvironmentObject, а тот факт, что поток данных является однонаправленным, означает, что некоторые из потенциально плохих побочных эффектов использования синглтона устранены. Это определенно то, что нужно иметь в виду.
@Fogmeister Интересно, не могли бы вы привести пример кода?
Я попробовал и это работает, но я хочу представить пару видов из одного в другой, некоторые из них используют настройки, а некоторые нет, поэтому я не хочу передавать настройки вручную, я думаю, что это цель @EnvironmentObject, иначе я мог бы использовать обычный var