【发布时间】:2022-10-15 23:25:16
【问题描述】:
我有这个奇怪的问题。当我单击 ColorPicker 时,视图消失并弹回根视图。我在下面附上了屏幕记录。任何人都知道如何解决这个问题?
代码在模拟器 ios 15.2 上运行
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
TabView {
HomePageView()
.tabItem {
Label("Home", systemImage: "circle.grid.cross.fill")
}
ProfileView()
.tabItem {
Label("Profile", systemImage: "person.fill")
}
}
.background(.secondary)
}
}
}
struct HomePageView: View {
var body: some View {
Text("Home View")
}
}
struct ProfileView: View {
var body: some View {
NavigationLink {
ColorPickerView()
} label: {
Text("Color Picker View")
}
}
}
struct ColorPickerView: View {
@State var bgColor = Color.blue
var body: some View {
ColorPicker("Pick color", selection: self.$bgColor)
.padding(.horizontal, 15)
}
}
【问题讨论】:
-
将 NavigationView 放在每个选项卡中,而不是放在选项卡视图之外
-
对我来说效果很好,在 macos 12.3-beta 上,使用 xcode 13.3-beta,针对 ios 15 和 macCatalyst 12。您可以尝试将:
.navigationViewStyle(.stack)添加到NavigationView或使用@lorem ipsum 建议。 -
TabViews是将NavigationView放在顶层的规则的一个例外。它必须进入选项卡项目视图。 -
感谢你们。 @loremipsum 的解决方案有效。
标签: swiftui swiftui-navigationview swiftui-tabview