我有这个简单的代码:
import SwiftUI
struct ExampleView: View {
@State private var selectedTab: String = "tab1"
var body: some View {
VStack {
Picker("Mode", selection: $selectedTab) {
Text("tab1").tag("tab1")
Text("tab2").tag("tab2")
Text("tab3").tag("tab3")
}
.pickerStyle(.segmented)
.padding([.horizontal, .top])
Form {
switch selectedTab {
case "tab1":
TabOneView()
case "tab2":
TabTwoView()
case "tab3":
TabThreeView()
default:
TabOneView()
}
}
}
.navigationTitle("Title")
.navigationBarTitleDisplayMode(.inline)
}
}
当我在预览中尝试此操作时,它可以正常工作,但是当我在应用程序中使用它时,这个
View
是用另一个 NavigationLink
的 View
调用的,选择器似乎冻结了:按另一个选项不会更改值,因此视图也不会改变(在视觉上,默认选项仍保持选中状态)。
家长
View
:
struct ParentView: View {
var body: some View {
Form {
// some other code
Section(header: Text("SUBVIEWS")) {
NavigationLink {
ExampleView()
} label: {
Text("Example")
}
NavigationLink {
Example2View()
} label: {
Text("Example2")
}
}
}
.navigationTitle("ParentView")
.navigationBarTitleDisplayMode(.inline)
}
}
我还尝试使用方法
.onChange
在变量selectedTab
上打印值,但它不会打印任何内容(同义词是值未更改)。
在
.zIndex(1)
上使用 Picker
可以解决问题。