SwiftUI表单选择器仅显示一次

时间:2020-01-01 14:11:56

标签: swiftui swiftui-bug swiftui-form

我正在使用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错误,否则它的内容在显示☹️时会上移)

2 个答案:

答案 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)
}