У меня проблемы со списками динамических c в SwiftUI. Я не могу получить мой список для динамического обновления с помощью средства выбора - PullRequest
0 голосов
/ 11 апреля 2020

В основном, как указано в названии. У меня есть средство выбора под названием Ingredients, и когда я go в списке и щелкаю элемент, он должен работать как кнопка (или, возможно, нет), и использую функцию add, чтобы добавить этот элемент в список ингредиентов, который является переменной состояния, которая должна затем обновите список внизу и отобразите его элементы, но это не так. Я сделал другие проекты с похожей идеей обновления списка, но никогда не с выбором. Любая помощь приветствуется. Также стоит отметить, что кнопка TEST работает для того, чего я хочу достичь, и @ObservedObject можно игнорировать.

import SwiftUI

struct AddRecipe: View {
    @ObservedObject var recipe: RecipeFinal
    @State private var name = ""
    @State private var time = 0
    @State private var diff = ""
    @State private var ingredients = [String]()

    static var diffT = ["Easy", "Medium", "Difficult"]

    static var ingred = ["Onion","Salt","Oil","Tomato", "Garlic", 
"Peppers","Bread","Vinegar"]

    var body: some View {
        NavigationView {
            Form {
                TextField("Name", text: $name)
                Stepper(value: $time, in: 0...120, step: 15) {
                    Text("Time: \(time) minutes")
                }
                Picker ("Difficulty", selection: $diff) {
                    ForEach (AddRecipe.self.diffT, id: \.self) {
                        Text($0)
                    }
                }
                Button("TEST") {
                    self.ingredients.append("TEST")
                }
                Picker("Ingredients", selection: $ingredients) {
                    ForEach (AddRecipe.self.ingred, id: \.self) { ing in
                        Button(action: {
                            self.add(element: ing)
                        }) {
                            Text("\(ing)")
                        }
                    }
                }
                Section(header: Text("Ingredients")) {
                    List (self.ingredients, id: \.self) {
                        Text($0)
                    }
                }
            }
        }
    }
    func add (element: String) {
        self.ingredients.append(element)
    }
 }

struct AddRecipe_Previews: PreviewProvider {
    static var previews: some View {
        AddRecipe(recipe: RecipeFinal())
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...