【发布时间】:2020-03-03 11:55:46
【问题描述】:
我正在尝试实现一个简单的切换开关,但我无法保存新的切换/开关状态,因为当我更改视图并返回设置时,它默认为关闭开关。你能告诉我我做错了什么吗?
struct StudyMode: View {
@State private var overdueFirst = UserDefaults.standard.bool(forKey: "Overdue First")
@EnvironmentObject var settings: UserSettings
var body: some View {
VStack {
HStack {
Toggle(isOn: $overdueFirst) {
Text("Overdue cards first")
}
.onTapGesture {
var newSwitch = false
if self.overdueFirst == false {
newSwitch = true
}
UserDefaults.standard.set(newSwitch, forKey: "Overdue First")
}
}
Spacer()
Text("By enabling this option, the cards will be ordered such that you will revise all overdue cards before you start learning new words.")
.font(.system(size: 12))
}
}
}
【问题讨论】:
-
尝试从
onAppear()中的用户默认值加载值并调试以查看发生了什么。麻生onTapGuesture可以降为self.overdueFirst.toggle()