SwiftUI 表单选择器只显示一次

SwiftUI Form Picker only shows once

我正在使用 SwiftUI,目前正在使用选择器构建一个表单。

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

您第一次点击 "Favorite person" 行时,选择器显示正常,点击其中一个姓名可返回表单。但是第二次点击表格行不会做任何事情:你不会去选择器,该行保持突出显示但没有任何反应。如果这是 SwiftUI 错误,是否有已知的解决方法? (我已经需要使用一个小的导航栏标题来解决选择器 UI 错误,否则它的内容会在显示时向上移动 ☹️)

这个问题只是模拟器的一个问题。如果您在物理 iOS 设备上构建应用程序,它就不再成为问题。这就像导航 Link 的那个错误,它只能工作一次。

我在 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)
}