Code: Select all
struct SettingsView: View {
private let viewModel = SettingsViewModel()
var selectedLanguageOption: Binding {
Binding {
viewModel.options.first { $0.identifier == viewModel.settings.currentLanguage }
} set: { value in
viewModel.settings.currentLanguage = value?.identifier ?? "en"
// that code is called correctly from within PickerSelect and new option is set, but the view is not updated, why?
}
}
var body: some View {
// { ...}
VStack {
TextLabel(selectedLanguageOption.wrappedValue?.title, size: 24, weight: .bold)
TextLabel(selectedLanguageOption.wrappedValue?.value)
}
// { ...}
}
}
Code: Select all
PickerSelect(selectedOption: selectedLanguageOption, isShowing: $isLanguagePresented, options: viewModel.options)
< /code>
Mein ViewModel: < /p>
@Observable
class SettingsViewModel {
let settings = Settings.shared
var options: [Options] { ... here I simply create an array of options }
}
class Settings {
static var shared = Settings()
@AppStorage("SettingCurrentLanguageKey") var currentLanguage: String = "en"
}
Vor der Auswahl: