我刚开始学习Swift(甚至是Swift UI!),所以如果出现新手错误,敬请谅解。
我正在尝试编写一个非常简单的程序,在这个程序中,用户从选择器中选择某个人的名字,然后在下面看到显示该人的问候语的文本。
但是,当使用选择器选取一个新值时,绑定变量chosenPerson不会更新。这意味着即使我选择了一个人,也会显示“Hello no-one”,而不是像“Hello Harry”这样的问候语。
struct ContentView: View {
var people = ["Harry", "Hermione", "Ron"]
@State var chosenPerson: String? = nil
var body: some View {
NavigationView {
Form {
Section {
Picker("Choose your favourite", selection: $chosenPerson) {
ForEach ((0..<people.count), id: \.self) { person in
Text(self.people[person])
}
}
}
Section{
Text("Hello \(chosenPerson ?? "no-one")")
}
}
}
}
}
我看了一下这个问题,似乎有点类似但是在Text(self.people[person])
中添加.tag(person)
并没有解决我的问题。
我如何才能让问候语显示所选人的名字?