У меня есть список SwiftUI, как в примере кода ниже.
struct ContentView: View {
@State var numbers = ["1", "2", "3"]
@State var editMode = EditMode.inactive
var body: some View {
NavigationView {
List {
ForEach(numbers, id: \.self) { number in
Text(number)
}
.onMove {
self.numbers.move(fromOffsets: $0, toOffset: $1)
}
}
.navigationBarItems(trailing: EditButton())
}
}
}
Когда я вхожу в режим редактирования и перемещаю элемент на одну позицию вверх, странная анимация происходит после того, как я уронил элемент (см. Рисунок ниже). ). Похоже, что перетаскиваемый объект возвращается в исходное положение, а затем снова перемещается к месту назначения (с анимацией)
Что интересно, это не так происходит, если вы перетаскиваете элемент вниз по списку или более чем на одну позицию вверх.
Я полагаю, это происходит из-за того, что List выполняет анимацию, когда элементы в состоянии переупорядочиваются, даже если они уже были переупорядочены на стороне вида перетаскиванием и брось. Но, очевидно, он справляется с этим во всех случаях, кроме перемещения предмета на одну позицию вверх.
Есть идеи, как решить эту проблему? Или, может быть, это известная ошибка?
Я использую XCode 11.4.1 и цель сборки: iOS 13.4
(Обратите также внимание, что в приложении "реального мира" я При использовании Core Data и при перемещении элементов их порядок обновляется в БД, а затем обновляется состояние, но проблема с анимацией выглядит точно так же.)