【发布时间】:2021-03-13 15:29:58
【问题描述】:
我遇到了 Picker 的问题。当我尝试更改选定段中的数据状态时,它会丢弃它(附有 gif)。更改显示数据时如何在选择器中保持选定段(当我按下“爱”按钮时,选定段应该保持不变)
单项有选项:
struct Landmark: Identifiable, Codable, Hashable {
var id: Int
var name: String
var imageName: String
var mainImage: Image {
Image(imageName)
var liked: Bool
var popular: Bool
var recommended: Bool
}
我得到了包含对象数组的类:
final class ModelData: ObservableObject {
@Published var landmarks: [Landmark]
}
并尝试像这样使用选择器:
struct tempSegmentControl: View {
@EnvironmentObject var modelData: ModelData
@State private var selected = ModelData().landmarks
var popularLandmarks: [Landmark] {
modelData.landmarks.filter { landmark in
(landmark.popular)
}
}
var rocommendedLandmarks: [Landmark] {
modelData.landmarks.filter { landmark in
(landmark.recommended)
}
}
var body: some View {
VStack {
Picker("Selection", selection: $selected) {
Text("All").tag(modelData.landmarks)
Text("Popular").tag(popularLandmarks)
Text("Recommended").tag(rocommendedLandmarks)
}
.pickerStyle(SegmentedPickerStyle())
.frame(width: UIScreen.main.bounds.width * 0.95)
ForEach(selected, id: \.id) { land in
NavigationLink(
destination: DetailView2(landmark: land)) {
MainItem3(landmark: land)
}
}
}
}
}
【问题讨论】:
标签: swiftui observable picker