Die benutzerdefinierte Bindungseigenschaft innerhalb der Ansicht aktualisiert diese Ansicht nicht, wenn sie geändert werIOS

Programmierung für iOS
Anonymous
 Die benutzerdefinierte Bindungseigenschaft innerhalb der Ansicht aktualisiert diese Ansicht nicht, wenn sie geändert wer

Post by Anonymous »

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)
}
// { ...}
}
}
Zu einem bestimmten Zeitpunkt dieser Ansicht präsentiere ich SheetView mit Optionen zum Auswählen und Übergeben von meiner ausgewählten Klang Bindung:

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"
}
In der App sieht es einfach aus wie:
Vor der Auswahl:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post