我有一个视图,可通过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/

10-11 04:34