在不处于编辑模式的情况下允许SwiftUI列表中的行重新排序,可以通过以下步骤实现:
Identifiable
协议的模型结构体,用于表示列表中的每一行数据。struct Item: Identifiable {
let id = UUID()
var name: String
}
@State
属性包装一个布尔值,用于表示是否处于编辑模式。@State private var isEditing = false
@State private var items = [
Item(name: "Item 1"),
Item(name: "Item 2"),
Item(name: "Item 3")
]
List
来展示行数据,并根据编辑模式显示不同的按钮。List {
ForEach(items) { item in
Text(item.name)
}
.onMove(perform: move)
}
.navigationBarItems(trailing: EditButton())
.environment(\.editMode, .constant(isEditing ? EditMode.active : EditMode.inactive))
move
方法,用于处理行的重新排序。func move(from source: IndexSet, to destination: Int) {
items.move(fromOffsets: source, toOffset: destination)
}
通过以上步骤,我们可以在不处于编辑模式的情况下允许SwiftUI列表中的行重新排序。用户可以通过点击导航栏的编辑按钮进入编辑模式,然后通过拖动行来重新排序。这种功能在需要对列表中的数据进行排序或调整顺序的场景中非常有用。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云