【发布时间】:2021-11-24 21:28:54
【问题描述】:
在 Mac 应用程序中,我正在尝试使用 AppStorage 存储 SwiftUI 列表选择。目标是让应用记住最后一次选择,以便在应用重新启动时选择它。我不知道如何将选择绑定到 AppStorage 属性。关于如何完成此任务的任何建议?
enum Fruit: String, CaseIterable, Identifiable {
case apple
case orange
case mango
case lemon
var id: String { rawValue }
}
struct Sidebar: View {
@Binding var selection: Fruit
var body: some View {
List(Fruit.allCases, id: \.self, selection: $selection) { fruit in
Text(fruit.rawValue)
}
.listStyle(SidebarListStyle())
.frame(minWidth: 150)
}
}
struct DetailView: View {
var selection: Fruit
var body: some View {
switch selection {
case .apple:
Text("???? \(selection.rawValue)").font(.title).frame(minWidth: 200)
case .orange:
Text("???? \(selection.rawValue)").font(.title).frame(minWidth: 200)
case .mango:
Text("???? \(selection.rawValue)").font(.title).frame(minWidth: 200)
case .lemon:
Text("???? \(selection.rawValue)").font(.title).frame(minWidth: 200)
}
}
}
struct ContentView: View {
@AppStorage("selection") private var selection: Fruit = .apple
var body: some View {
NavigationView {
Sidebar(selection: $selection)
DetailView(selection: selection)
}
.frame(width: 500, height: 300)
}
}
【问题讨论】:
-
在侧边栏视图中尝试 onTapGesture selection = fruit 。我很确定您不能像使用选择器选择那样使用列表选择。
-
您可以在
List中添加可选选项。见List。但是,该列表并未将直接的@AppStorage作为直接绑定。你的方法是解决这个问题的简单方法......