[英]SwiftUI Drag and Drop with a list
到目前為止,還沒有真正的引導方法來拖放。 .onDrag 修飾符似乎只適用於 iPad。 我的建議是您使用 UIViewRepresentable 並制作一個表格視圖(UI 工具包),然后從那里實現拖放。
本教程包含您需要的一切,並且很容易跟進。 (作為旁注,SwiftUI 確實很容易,而不是在 UIKit 中必須這樣做)。
https://www.vadimbulavin.com/add-edit-move-and-drag-and-drop-in-swiftui-list/
更新:我添加了一些關於如何解決問題的解釋。
腳步:
處理程序簽名是(Int, [NSItemProvider])
,它為您提供拖放的itemProviders
的index
,以及為您提供有關已刪除內容的信息的 itemProviders。
struct EditListView: View {
@State private var items: [Item] = [
Item(title: "Apple"),
Item(title: "Banana"),
Item(title: "Papaya"),
Item(title: "Mango")
]
var body: some View {
NavigationView{
List {
ForEach(
items,
id: \.self
) { item in
Text(item.title)
}
.onInsert(of: [String(kUTTypeURL)], perform: onInsert)
}
.navigationTitle("Fruits")
}
}
private func onInsert(at offset: Int, itemProvider: [NSItemProvider]) {
for provider in itemProvider {
// check if object is of URL type
if provider.canLoadObject(ofClass: URL.self) {
// load the object and add it on screen
_ = provider.loadObject(ofClass: URL.self) { url, error in
DispatchQueue.main.async {
url.map { self.items.insert(Item(title: $0.absoluteString), at: offset) }
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.