web-dev-qa-db-ja.com

SwiftUIフォームピッカーは一度だけ表示されます

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

「お気に入りの人」の行を初めてタップすると、ピッカーがうまく表示され、名前の1つをタップすると、フォームに戻ります。ただし、フォームの行をもう一度タップしても何も起こりません。ピッカーに移動しないと、行は強調表示されたままですが、何も起こりません。これがSwiftUIのバグである場合、既知の回避策はありますか? (ピッカーUIのバグを回避するには、小さなナビゲーションバーのタイトルを使用する必要がありました。それ以外の場合は、表示されたときにコンテンツが上に移動します☹️)

7
Kevin Renskers

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)
}
0
Ali Tavakoli