swift - 如何删除列表中的 NavigationLink
问题描述
我的项目中有以下代码
@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")}))
}
我想知道如何实现滑动以删除列表中每一行的功能。我知道它应该是通过 .onDelete 修饰符,但我不知道如何申请如上构造的 List。如果 List 是通过 ForEach 创建的,它就可以工作。谢谢。
解决方案
在列表中使用 ForEach 有什么问题?您只能将 .onDelete 修饰符与 ForEach 一起使用。在您的示例中(内部没有 ForEach 的列表)一个包含一个包含所有导航链接的单元格的列表,在您的情况下应该使用 .onDelete 删除什么?
像这样的东西:
List {
ForEach(genres, id:\Genres.genID) { genre in // here I don't know what your Genres.ID is so could be mistake
NavigationLink(destination: GenreView(isNew: false, genre: genre)) {
Text("\(genre.genName!)")
}.simultaneousGesture(TapGesture().onEnded{
// save selected id if you need
})
}.onDelete(perform: // your onDelete action here)
}
推荐阅读
- javascript - 如何使用作为生成器并能够链接它们的函数来扩展数组?
- python - 如何在 python 中将 csv 中的两列组合为我的 ggplot 的 x 轴?
- java - MD5 - 未定义字符串类型的方法
- json - 以编程方式用数据填充 Firestore 文档
- mysql - 需要为现有项目动态更改时区
- angular - input[ngbdatepicker] 指令的用例
- java - 为什么我的控制台输入没有终止。如果我删除代码 countSwaps(a,size) 则控制台输入终止,否则不会
- java - C#接口协方差,指定参数类型
- python - findall 语句中的 " 问题
- c# - 有没有办法使用不存在的成员变量从字典中选择一个元素?