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

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

【问题讨论】:

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

标签: list swiftui edit


【解决方案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)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多