我尝试使用“.onInsert()”在一个视图中从不同部分拖放“ForEach”行,通过搜索我发现下面的示例代码工作正常,但问题不是解释如何拖动“ForEach” " 行,因为它从 safari 应用程序中拖出一个 URL,找到如何将“ForEach”行从一个部分拖放到另一个“ForEach”部分的任何帮助。
import SwiftUI
import MobileCoreServices
struct Item: Identifiable {
let id = UUID()
let title: String
}
struct DragAndDropFromAnotherApp: View {
@State private var items: [Item] = (0..<5).map { Item(title: "Item #\($0)") }
var body: some View {
List {
ForEach(items) { item in
Text(item.title)
}
.onInsert(of: [String(kUTTypeURL)], perform: onInsert)
}
.navigationBarTitle("List")
}
private func onInsert(at offset: Int, itemProvider: [NSItemProvider]) {
for provider in itemProvider {
if provider.canLoadObject(ofClass: URL.self) {
_ = provider.loadObject(ofClass: URL.self) { url, error in
DispatchQueue.main.async {
url.map { self.items.insert(Item(title: $0.absoluteString), at: offset) }
}
}
}
}
}
}