У меня есть foreach внутри списка, и я пытаюсь сделать элементы доступными для выбора с помощью кнопки редактирования:
@State private var selection: Workout?
var body: some View {
NavigationStack {
List(selection: $selection) {
Section(header: Text("Recent Workouts")) {
ForEach(workouts) { workout in
NavigationLink {
EditWorkoutView(workout: workout)
.navigationBarBackButtonHidden(true)
} label: {
.toolbar {
EditButton()
Но когда я нажимаю кнопку редактирования, весь список исчезает, вместо того, чтобы сделать элементы доступными для выбора, мне приходится использовать forEach. Я не могу добавлять тренировки непосредственно в список, так есть ли способ обойти это?
Тип selection
должен соответствовать типу параметра ForEach
id
, который является типом ID
протокола Identifiable
, если параметр id
выводится.
Либо укажите id
:
ForEach(workouts, id: \.self) { …
Или объявите selection
вот так
@State private var selection: Workout.ID?
Второй путь предпочтительнее.
Может быть, использовать жесты касания? См., например, stackoverflow.com/questions/65100077/…