Swiftui 移除滑动删除功能

Posted

技术标签:

【中文标题】Swiftui 移除滑动删除功能【英文标题】:Swiftui remove swipe to delete functionality 【发布时间】:2021-01-15 22:18:48 【问题描述】:

有没有办法删除或停用滑动删除功能,该功能仅删除每个编辑按钮的项目?

【问题讨论】:

@Yrb 你应该仔细看看这个问题。 是的,你是对的。 . .我完全误读了那个。这就是我在一天结束时这样做的结果...... 如果我上周的回答有帮助,您可以接受这个答案,以便人们以后更容易找到这个问题。 (你也会获得一些奖励声望) 【参考方案1】:

您可以使用deleteDisabled(_:),根据EditMode 状态限制List/Form 的删除功能。

以下是一个简短的示例,演示仅在编辑模式下有效的删除:

struct ContentView: View 
    
    @State private var data = Array(1 ... 10)
    
    var body: some View 
        NavigationView 
            Form 
                DataRows(data: $data)
            
            .navigationTitle("Delete Test")
            .toolbar 
                EditButton()
            
        
    



struct DataRows: View 
    
    @Environment(\.editMode) private var editMode
    @Binding private var data: [Int]
    
    init(data: Binding<[Int]>) 
        _data = data
    
    
    var body: some View 
        ForEach(data, id: \.self)  item in
            Text("Item: \(item)")
        
        .onMove  indices, newOffset in
            data.move(fromOffsets: indices, toOffset: newOffset)
        
        .onDelete  indexSet in
            data.remove(atOffsets: indexSet)
        
        .deleteDisabled(editMode?.wrappedValue != .active)
    

【讨论】:

以上是关于Swiftui 移除滑动删除功能的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SwiftUI 列表和领域中删除数据

在 CollectionView 上滑动删除

仿知乎安卓client滑动删除撤销ListView

让 tableView 从 NSUserDefaults 中删除滑动删除项目 - 如何将这两个功能结合在一起?

一旦按下滑动删除按钮,删除功能(提交编辑样式功能)会导致应用程序崩溃

小程序 开发之向左滑动实现删除功能