Использование ForEach с массивом привязок (SwiftUI) - PullRequest
2 голосов
/ 25 июня 2019

Моя цель - динамически генерировать форму из JSON.У меня есть все вместе, за исключением генерации представлений FormField (на основе TextField) с привязками к динамически сгенерированному списку моделей представлений.

Если я поменяю местами представления FormField только для обычных представлений Text, он будет работать нормально (см. скриншот):

ForEach(viewModel.viewModels) { vm in
    Text(vm.placeholder)
}

для

ForEach(viewModel.viewModels) { vm in
     FormField(viewModel: $vm)
}

Я пытался сделать свойство viewModels для ConfigurableFormViewModel переменной @State, но оно теряет свою кодируемость.JSON> Связывание <[FormFieldViewModel] естественно не работает. </p>

Вот суть моего кода :

imageText">

1 Ответ

0 голосов
/ 25 июня 2019

Попытка другого подхода. FormField поддерживает свое собственное внутреннее состояние и публикует (через завершение), когда его текст фиксируется:

struct FormField : View {
    @State private var output: String = ""
    let viewModel: FormFieldViewModel
    var didUpdateText: (String) -> ()

    var body: some View {
        VStack {
            TextField($output, placeholder: Text(viewModel.placeholder), onCommit: {
                self.didUpdateText(self.output)
            })

            Line(color: Color.lightGray)
        }.padding()
    }
}
ForEach(viewModel.viewModels) { vm in
    FormField(viewModel: vm) { (output) in
        vm.output = output
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...