Considere o seguinte PreferencesView
apresentado como uma folha:
struct PreferencesView: View {
@Environment(\.dismiss) private var dismiss
@AppStorage("setting1") var setting1: Bool = true
@AppStorage("setting2") var setting2: Bool = false
@AppStorage("setting3") var setting3: Bool = false
// many more
var body: some View {
NavigationView {
Form {
Toggle("Setting 1", isOn: $setting1)
Toggle("Setting 2", isOn: $setting2)
Toggle("Setting 3", isOn: $setting3)
}
.navigationTitle("Preferences")
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button("Cancel") {
reset()
dismiss()
}
}
ToolbarItem(placement: .navigationBarTrailing) {
Button("Save") {
dismiss()
}
}
}
}
}
private func reset() {
// what do I put here?
}
}
Se o usuário clicar em cancelar, gostaria que o valor das configurações fosse redefinido para quando a planilha foi aberta. Eu poderia adicionar initialSetting1
propriedades separadas, etc, e depois na reset
função add setting1 = initialSetting1
. Mas com muitas configurações isso se torna entediante.
Existe outra maneira?
onAppear
@State
para vincular a uma alternância@State
configurações quando o usuário pressionar o botão Salvar.Assim: