使用 LazyVStack 在 Mac 应用程序中重新排序 SwiftUI 列表

问题描述

这是一个简单的 ma​​cOS 演示应用,它比较了使用 SwiftUI ListLazyvstack。我更喜欢使用 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 )
  }
}

enter image description here

项目的重新排序在 List 示例中工作正常。但在 Lazyvstack 中什么也没有发生。

有没有办法让 .onMove 功能Lazyvstack 实例中工作?还是我必须使用 .onDrag 实现一整套自定义 NSItemProvider 东西?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...