【发布时间】:2021-02-12 10:57:04
【问题描述】:
我想在用户稍后回来时显示并保存所选菜单。我当前的代码只显示选定的项目,但当我关闭工作表并返回时没有保存。
@State var selectedAge: Int = .zero
var body: some View {
Menu {
ForEach(myViewModel.MyModel.selectAge.indices, id: \.self) { indice in
Button(action: {
selectedAge = indice
}) {
if selectedAge == indice {
Text("\(myViewModel.MyModel.selectAge[indice])")
}
else {
Text("")
}
}
}
} label: {
Text("\(myViewModel.MyModel.selectAge[selectedAge])")
}
}
此代码来自我的模型
var selectedAge: [String] = ["12", "15", "18", "21", "24"]
请指导我解决这个问题。
【问题讨论】:
-
基本上可以将selectedAge存储在UserDefaults中。
-
是的,我已经实现了用户默认设置,并且它适用于其他步进器、选择器小部件。但它不仅适用于菜单。
-
能否请您使用 UserDefaults 版本编辑您的问题,我们可以看到您做错了什么,因为您需要的只是持久性。
-
我认为,由于@state,当用户关闭并再次打开时,它被替换为 .zero (第一个索引 [“12”])。会是这个原因吗?
-
没错,这就是我要说的......您没有保留任何 selectedAge,因此当您打开该菜单时,您会看到 selectedAge 数组的第一项。你也可以使用@AppStorage。
标签: ios arrays swift swiftui swiftui-list