这是一个简单的macOS演示应用程序,它使用 SwiftUIList
和LazyVStack
. 我更喜欢使用 aLazyVStack
因为它更容易自定义样式。但似乎缺少一些内置功能,例如重新排序列表项(如下所示)
import SwiftUI
class MyData: ObservableObject{
@Published var items = ["One", "Two", "Three", "Four", "Five"]
}
struct ContentView: View {
@StateObject var model = MyData()
var body: some View {
HStack{
//--- List ---
VStack{
Text("List")
.fontWeight(.bold)
List{
ForEach(model.items, id: \.self){ item in
Text(item)
}
.onMove(perform: move)
}
}
//--- LazyVStack ---
VStack{
Text("LazyVStack")
.fontWeight(.bold)
ScrollView {
LazyVStack {
ForEach(model.items, id: \.self){ item in
Text(item)
}
.onMove(perform: move)
}
}
}
}
}
//Reorder List
func move(from source: IndexSet, to destination: Int) {
model.items.move(fromOffsets: source, toOffset: destination )
}
}
在示例中,项目的重新排序工作正常List
。但在LazyVStack
.
有没有办法让.onMove
功能在LazyVStack
实例中工作?还是我必须用 来实现一整套定制的.onDrag
东西NSItemProvider
?