私は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のバグを回避するには、小さなナビゲーションバーのタイトルを使用する必要がありました。それ以外の場合は、表示されたときにコンテンツが上に移動します☹️)
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)
}