Do you know if there is a work around to animate the reorder of a table without generating ghost rows?
here is the code:
var id = UUID()
var name: String
var value: Int
}
struct ContentView: View {
@State var selectedNumber: UUID?
@State var sortedBy: [KeyPathComparator<MyNumbers>] = [KeyPathComparator(\.name, order: .reverse)]
@State var numbers: [MyNumbers] = {
var numbersArray = [MyNumbers]()
for i in 0..<100 {
numbersArray.append(MyNumbers(name: "\(i)", value: i))
}
return numbersArray
}()
var body: some View {
Table(numbers, selection: $selectedNumber, sortOrder: $sortedBy) {
TableColumn("names", value: \.name){ number in
Text(number.name)
}
TableColumn("names", value: \.name){ number in
Text(number.name)
}
}.onChange(of: sortedBy) { oldValue, newValue in
withAnimation {
numbers.sort(using: newValue)
}
}
}
}
it generates ghost rows when the top row is selected and reorders twice, as you can see in the screenshot, the first six rows has two labels overlapped.