问题描述
这是一个简单的 macOS 演示应用,它比较了使用 SwiftUI List
和 Lazyvstack
。我更喜欢使用 Lazyvstack
,因为它更容易自定义样式。但似乎缺少一些内置功能,例如重新排序列表项(如下所示)
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
东西?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)