В основном, как указано в названии. У меня есть средство выбора под названием 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())
}
}