【发布时间】:2021-09-06 11:08:14
【问题描述】:
我有一个包含可识别项目的列表,如何手动删除,参数是项目的 id??
查看:
struct FavListView: View {
@StateObject var favList = FavViewModel()
@ViewBuilder
var body: some View {
NavigationView {
List {
ForEach(favList.items, id: \.self.id) { data in
NavigationLink(
destination: ItemDisplayVC(data.slug ?? "").navigationTitle("").navigationBarHidden(true),
label: {
ListContentItem(name: data.name ?? "", image: data.image ?? "", released: data.released ?? "", rank: data.rank ?? -1)
})
}
.onDelete(perform: { indexSet in
print("\(indexSet)")
})
}
.navigationTitle("Favourite")
.onAppear {
favList.fetchData()
}
}
}
}
这是模型
public struct ItemPreviewModel: Codable, Hashable, Identifiable {
public var id: Int?
var slug: String?
var name: String?
var image: String?
var released: String?
var desc: String?
var rating: Float?
var rank: Int?
enum CodingKeys: String, CodingKey {
case name, rating, released, id, slug
case desc = "description_raw"
case image = "background_image"
case rank = "rating_top"
}
}
这是删除数据库中项目的手动函数:
func onDelete(id:Int) {
///perform delete by id
// refresh the view
}
我可以使用 swiftui 中的任何内置本机函数吗?因为我喜欢将删除动画整合到列表中。
非常感谢
【问题讨论】:
-
这是一个 SwiftUI 问题吗?如果是,SwiftUI 代码在哪里?
-
对不起,我忘记添加了
-
您的视图显示您的视图模型
FavViewModel中的项目。因此,您可以在视图模型中实现delete(id:)。 -
我已经做到了,我已经在我的视图模型中构建了 onDelete 函数
-
但是,我想使用 ForEarch 中 onDelete 的内置动画