处理 SwiftUI 中的嵌套 NavigationStack?

Nic*_*lli 6 swiftui swiftui-navigationstack

我环顾四周,但没有看到任何这方面的信息。如果我想在 SwiftUI 中拥有多个导航堆栈,并拥有多个添加到不同导航堆栈的导航链接,我该怎么做?在我的用例中,我使用选项卡视图,所以我会是这样的:

NavigationStack(path: $globalNavigationStack) {
  TabView {
    PrimaryView()
    SecondaryView()
  }
}
Run Code Online (Sandbox Code Playgroud)

那么也许在 PrimaryView 中:

struct PrimaryView: View {
  var body: some View {
    NavigationStack(path: $localNavigationStack) {
       NavigationLink(value: SomeType.self) {
         Button("This should add to local stack")
       }
       .navigationDestination(for: SomeType.val) { someType in
          ViewOnLocalStack() 
       }

       NavigationLink(value: SomeType.self) {
         Button("This should add to global stack")
       }
       .navigationDestination(for: SomeType.val) { someType in
          ViewOnGlobalStack() 
       }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但第二个NavigationLink将添加到本地堆栈。假设我有权访问全局路径,如何使第二个路径添加到全局路径?我尝试的是这样的:

NavigationStack(path: $globalNavigationStack) {
  TabView {
    PrimaryView()
    SecondaryView()
  }
}
.navigationDestination(for: SomeType.val) { someType in
    ViewOnGlobalStack() 
}
Run Code Online (Sandbox Code Playgroud)

随着onDestination从第二个链接中删除 ,但控制台抱怨导航链接没有相应的onDestination. 不确定我是否见过其他人有类似的情况。