С WWDC 2022 Apple представила протокол переносимого для поддержки перетаскивания и выбросов простым способом. Как я могу использовать эту новую технику (в сочетании с новыми модификаторами Draggable и DropDestination) для таблиц Swiftui (не списков)? Кроме того, при применении модификаторов непосредственно к представлениям в TableColumn < / code> операция перетаскивания / выпада будет работать только для этой конкретной ячейки, а не для всей строки. При добавлении модификаторов ко всем ячейкам он все еще не работает при перетаскивании, например, в пустом месте внутри ряда. < /p>
Код: Выделить всё
struct Item: Identifiable, Codable, Transferable {
let id = UUID()
let text: String
static var transferRepresentation: some TransferRepresentation {
CodableRepresentation(contentType: .text)
}
}
struct Test: View {
var body: some View {
Table {
TableColumn("Column 1") { item in
Text(item.text)
.draggable(item) // This does only work when dragging not in the space between two columns
}
TableColumn("Column 2") { item in
Text(item.text)
.draggable(item) // This does only work when dragging not in the space between two columns
}
} rows: {
ForEach([Item(text: "Hello"), Item(text: "World")]) { item in
TableRow(item)
.draggable(item) // This causes a compile-time error
.itemProvider { ... } // This does not work with Transferable and thus support my use case
}
}
}
}
Я хочу аналогичное поведение в качестве модификатора Itemprovider и недавно добавленный модификатор контекста в TableRowContent , который позволяет соответствующую операцию на всей строке таблицы. Я не могу использовать itemprovider , поскольку необходимо возвращать nsitemprovider, который не поддерживает мой случай использования перетаскивания файла с сетевого диска на жесткий диск Mac.
Подробнее здесь:
https://stackoverflow.com/questions/744 ... in-swiftui