Вложенный список SwiftUI не отображается - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать представление с двумя вложенными представлениями списка. Это означает, что у основного представления есть строки, и у каждой строки также есть строки. Из-за требования переупорядочения (режим редактирования) и пролистывания для удаления (только для внутренних строк) я не могу просто использовать циклы ForEach с представлением прокрутки. Проблема заключается в следующем: внутренние строки не отображаются, когда я нажимаю «+ добавить набор», хотя отладка показывает, что они действительно добавлены. причина может заключаться в том, что вид внешнего ряда не адаптируется к его высоте. Я знаю это, потому что, если я использую только ForEach, а не List, строки появляются. но тогда я не могу использовать салфетки для удаления. это код для внутренних строк (как в виде списка):

       List {
                ForEach(self.exercise.sets) { set in
                    SetRow(set: set, exercise: self.exercise)
                }.onDelete { (offsets) in
                    self.exercise.sets.remove(atOffsets: offsets)
                }
        }

каждая внешняя строка имеет VStack перед этим списком (для имени упражнения и заголовков столбцов) и кнопку ниже. см. снимки экрана Inner list without List, only ForEach loop

Althout object for the inner row was added, the row doesn't appear

1 Ответ

0 голосов
/ 11 октября 2019

кажется, что я нашел обходной путь ... Внешний список выглядит следующим образом:

 List() {

      Text("New workout").font(.title)

       ForEach(self.workoutModel.exercises) {exercise in
            ExerciseWorkoutView(exercise: exercise)
        }



  }

Я просто добавил следующий модификатор фрейма в ExerciseWorkoutView (который является VStack с представлением списка в нем:

.frame(height: self.minFrameHeight + self.setRowHeight * CGFloat(self.exercise.sets.count)).animation(.default)

minFrameHeight и setRowHeight являются константами, которые я установил.

self. упражнение - это наблюдаемый объект с массивом множеств как @ Опубликованная переменная экземпляра, поэтому высота кадра автоматически адаптируется ...

, если кто-нибудь знает лучшее решение, спасибо за публикацию. Я попробовалнесколько вариантов .fixedSize (...) , но это не сработало.

...