SwiftUI ScrollView-是否可以;“重新订购”/&引用;“移动”;滚动视图中的项目是否与列表中的项目相同?

SwiftUI ScrollView-是否可以;“重新订购”/&引用;“移动”;滚动视图中的项目是否与列表中的项目相同?,swiftui,swiftui-list,Swiftui,Swiftui List,是否可以像在列表中一样在滚动视图中“重新排序”/“移动”项目?我有一个操场,在它下面可以很好地编译/运行,但是onDelete/onMove没有可视化任何用于拖动/移动的删除按钮或汉堡线 有没有办法让我的代码在这里工作,至少“onMove”的概念可以工作 注意-我注意到List和ScrollView(我认为)都支持协议DynamicViewContent,所以我们假设它应该可以工作(?) 运行代码后的图像: 代码(游乐场) 请阅读并考虑这一点,请向我们展示你尝试过的代码。好点——多尼认为你的问

是否可以像在列表中一样在滚动视图中“重新排序”/“移动”项目?我有一个操场,在它下面可以很好地编译/运行,但是onDelete/onMove没有可视化任何用于拖动/移动的删除按钮或汉堡线

有没有办法让我的代码在这里工作,至少“onMove”的概念可以工作

注意-我注意到List和ScrollView(我认为)都支持协议DynamicViewContent,所以我们假设它应该可以工作(?)

运行代码后的图像:

代码(游乐场)


请阅读并考虑这一点,请向我们展示你尝试过的代码。好点——多尼认为你的问题在这里得到回答……我不知道这是如何回答的,但是它确实说它不支持它。它提到了ScrollView,但随后确认onMove不适用于ScrollView。只需阅读:quote:“编辑:您只能在列表中使用onDelete、onMove和onInsert。如果您想让用户删除ScrollView中的一行,您必须自己实现一些功能。请查看下面的代码,了解一个简单(非常难看)的示例:”
import SwiftUI
import PlaygroundSupport

let modelData: [String] = ["Eggs", "Milk", "Bread"]

struct ListTestNoDelete: View {
    private func move(from uiStartIndexSet: IndexSet, to uiDestIndex: Int) {
        print("On Move")
    }
    private func delete(at offsets : IndexSet) {
        print("On Delete")
    }
    var body: some View {
        NavigationView {
            VStack {
                ScrollView {
                    ForEach(modelData, id: \.self) { str in
                        HStack {
                            Image(systemName: "square")
                            Text(str)
                            Spacer()
                        }.padding(.horizontal, 3)
                    }
                    .onMove(perform: self.move)
                    .onDelete(perform: self.delete)
                }
                .environment(\.editMode, .constant(.active))
                .navigationBarTitle( Text("Test") )
            }
        }
    }
}


let listTest = ListTestNoDelete()
PlaygroundPage.current.liveView = UIHostingController(rootView: listTest)