我正在使用SwiftUI,目前正在使用Picker构建Form。
import SwiftUI
struct ContentView: View {
private let names = ["Bill", "Peter", "Johan", "Kevin"]
@State private var favoritePerson = "Bill"
var body: some View {
NavigationView {
Form {
Picker("Favorite person", selection: $favoritePerson) {
ForEach(names, id: \.self) { name in
Text(name)
}
}
}
.navigationBarTitle("Form", displayMode: .inline)
}
}
}
第一次单击“收藏夹人”行时,选择器会显示得很好,而点击其中一个名称将使您回到表单。但是第二次点击表单行却无济于事:您无需转到选择器,该行将保持突出显示状态,但不会发生任何事情。如果这是SwiftUI错误,是否有已知的解决方法? (我已经需要使用一个小的导航栏标题来解决Picker UI错误,否则它的内容在显示☹️时会上移)
答案 0 :(得分:7)
这个问题只是模拟器中的一个。如果您在物理iOS设备上构建应用程序,则不再成为问题。就像导航链接中的那个错误只会起作用一次。
答案 1 :(得分:0)
我在Xcode 11.4和真实设备中都遇到了同样的问题。
选择器更改未调用CreateTab
,仅在初始化中起作用。
Picker("Numbers", selection: $selectorIndex) {
ForEach(0 ..< formData.tabs.count) { index in
Text(formData.tabs[index].name).tag(index)
}
}
.pickerStyle(SegmentedPickerStyle())
.onReceive([self.selectorIndex].publisher.first()) { (value) in
print(value)
CreateTab(tabs: formData.tabs, index: self.selectorIndex)
}