我正在 SwiftUI 中的表单中创建一个选择器。在选择器中选择新元素时,当视图拉回表单时,选择器行不会被取消选择。这是我的意思的屏幕截图,选择器行像这样保持灰色。
我阅读了一些先前的答案,这些答案说这是 Xcode 11.3 中的一个错误,但是,我正在运行 Xcode 12 beta 4 并且不确定这是否仍然是一个错误。
这就是我创建选择器的方式:
struct SettingsView: View {
@State private var currentSelection = 1
var body: some View {
NavigationView {
Form {
Section {
Picker("Test 2", selection: $currentSelection) {
ForEach(1 ...< 100) { i in
Text(String(i)).tag(i)
}
}
}
}
}
}
}
这是我的 ContentView,我从中展示 SettingsView:
enum ActiveSheet: Identifiable {
case photoPicker, settings
var id: Int {
self.hashValue
}
}
struct ContentView: View {
@State var activeSheet: ActiveSheet?
var body: some View {
NavigationView {
VStack {
Text("Hello world")
Button("Select Photo") {
self.activeSheet = .photoPicker
}
}
.navigationBarTitle(Text("Title"), displayMode: .inline)
.navigationBarItems(trailing: Button(action: {
self.activeSheet = .settings
}, label: {
Image(systemName: "gear")
.imageScale(.large)
}))
}
.sheet(item: $activeSheet) { item in
if item == .photoPicker {
ImagePicker(selectedImage: $image, sourceType: .photoLibrary)
} else {
SettingsView()
}
}
}
}
编辑:我创建了一个全新的项目,这是唯一的代码:
import SwiftUI
struct ContentView: View {
@State private var currentSelection = 0
var body: some View {
NavigationView {
Form {
Section {
Picker("Test Picker", selection: $currentSelection) {
ForEach(0 ..< 100) { i in
Text(String(i)).tag(i)
}
}
}
}.navigationBarTitle(Text("Test"))
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
问题仍然存在。