Ошибка анимации в списке при входе в режим редактирования с отключенным смахиванием для удаления.IOS

Программируем под IOS
Ответить
Anonymous
 Ошибка анимации в списке при входе в режим редактирования с отключенным смахиванием для удаления.

Сообщение Anonymous »

Я пытаюсь добавить в список кнопку редактирования, чтобы иметь возможность удалять несколько элементов одновременно без красных элементов управления удалением в начале каждой строки.
Чтобы удалить элементы управления удалением, я использую этот .deleteDisabled(editMode?.wrappedValue.isEditing == true). Но когда я добавляю эту строку, при входе в режим редактирования анимация становится странной, как будто список подпрыгивает.
Пример кода можно найти здесь:

Код: Выделить всё

import SwiftUI

struct ContentView: View {
@State private var items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
@State private var selection: Set = []

var body: some View {
NavigationStack {
List(selection: $selection) {
ItemsList(items: $items)
}
.toolbar {
ToolbarItem(placement: .topBarLeading) {
EditButton()
}
ToolbarItem(placement: .topBarTrailing) {
if !selection.isEmpty {
Button("Delete", role: .destructive) {
items.removeAll { selection.contains($0) }
selection.removeAll()
}
}
}
}
}
}
}

private struct ItemsList: View {
@Binding var items: [String]
@Environment(\.editMode) private var editMode

var body: some View {
ForEach(items, id: \.self) { item in
Text(item)
}
.onDelete { offsets in
items.remove(atOffsets: offsets)
}
.deleteDisabled(editMode?.wrappedValue.isEditing == true) // the bug appears with this line
}
}

#Preview {
ContentView()
}
Изображение



Подробнее здесь: https://stackoverflow.com/questions/798 ... e-disabled
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»