Как получить представление, чтобы динамически соответствовать объекту? - PullRequest
0 голосов
/ 21 апреля 2020

Я пишу приложение, которое содержит тренировки. Объект Workout имеет массив объектов Exercise. Каждое упражнение имеет название и несколько других полей. У меня есть родительское представление со списком, список содержит несколько представлений NewExercise (), каждое из которых имеет 2 TextFields и 2 Pickers. Я пытаюсь как-то найти, что каждый экземпляр NewExercise () связан с объектом Exercise. При настройке свойств состояния определенного представления NewExercise () оно одновременно корректирует соответствующее упражнение. Например, изменение имени в NewExercise()[0] меняет имя Exercise[0]. NewExercise()[1] изменения Exercise[1] и так далее. Затем, когда кнопка «Создать» нажата в родительском представлении, все объекты Exercise помещаются в массив.

Итак, мой главный вопрос:

Как мне привести каждое из этих представлений в соответствие с Упражнением? Нечто подобное NewExercise()[1] связано с Exercise[1]. Таким образом, корректировка поля в представлении изменяет соответствующий атрибут упражнения.

Мой код немного длинен для включения, но у меня есть схема того, как он выглядит и как я хотел бы, чтобы он функционировал: Диаграмма

Тем не менее, позвольте мне знать, было бы полезно предоставить какой-либо код. Или если я иду в неправильном направлении. Я довольно новичок в стремлении что-либо помочь.

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать @State & @Binding оболочки свойств для достижения этой цели. Ваш NewExercise Просмотр должен иметь @State var exercise: Exercise, где упражнение будет выглядеть так:

struct Exercise {
    var exerciseName: String
    // ... other properties here
}

А в вашем NewExercise View вы должны иметь что-то вроде этого:

struct NewExercise: View {
    @State var exercise: Exercise <-- State is owned by the view

    var body: some View {
        TextField("Placeholder", text: $exercise.exerciseName) <-- This is a binding
    }
}

Дальнейшее объяснение: https://developer.apple.com/videos/play/wwdc2019/226/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...