我的项目中有以下代码
@State private var selectedGenreID: Int64? = 0
@FetchRequest(entity: Genres.entity(), sortDescriptors: [NSSortDescriptor(key: "genName", ascending: true, selector: #selector(NSString.localizedStandardCompare))])
var genres: FetchedResults<Genres>
var body: some View {
List(genres, id: \Genres.genID, selection: $selectedGenreID, rowContent: { genre in
NavigationLink(genre.genName!, destination: GenreView(isNew: false, genre: genre))
})
.navigationBarTitle("Žánry")
.navigationBarItems(trailing: NavigationLink(destination: GenreView(isNew: true), label: {Image(systemName: "plus.circle")}))
}
我想知道如何实现swipe来删除列表中每一行的功能。我知道应该通过.onDelete修饰符,但我不知道如何应用如上构造的List。如果List是通过ForEach创建的,它就可以工作。谢谢。
3条答案
按热度按时间ccrfmcuu1#
在列表中使用ForEach有什么问题?您只能在ForEach中使用.onDelete修饰符。在您的示例(没有ForEach的列表)中,一个列表包含一个单元格,其中包含所有导航链接,在您的示例中,应该使用.onDelete删除什么?
大概是这样的:
ldxq2e6h2#
这就是我最终成功的方法
pkbketx93#
您的示例:
修正示例:
仅列出(...更改为ForEach(...