我有一个视图,可通过NavigationLink生成子视图。我希望此父视图始终以暗模式显示,而子视图以系统的配色方案显示:
struct ParentView: View {
var body: some View {
NavigationView {
HStack {
NavigationLink("Spawn child", destination: ChildView())
}
}.navigationBarHidden(true).preferredColorScheme(.dark)
}
}
struct ChildView: View {
var body: some View {
Text("Some text")
}
}
据我所知,NavigationLink生成的子视图继承了覆盖的配色方案。有没有一种方法允许子视图继承系统配色方案?[编辑]
可以在此处找到示例项目:https://filebin.net/2rvhy7a6wzjdhsgr/NavigationTest.zip?t=qffbi52b
最佳答案
尝试以下
struct ParentView: View {
@Environment(\.colorScheme) var colorScheme // top env color scheme
var body: some View {
NavigationView {
HStack {
NavigationLink("Spawn child", destination:
ChildView().colorScheme(colorScheme)) // << pass here !!
// ChildView().preferredColorScheme(colorScheme)) // << alternate
}.preferredColorScheme(.dark)
}.navigationBarHidden(true)
}
}
关于ios - 防止SwiftUI NavigationLink继承重写的preferredColorScheme,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63189030/