0

我的 ContentView 包括一个 NavigationView,我通过 NavigationLink 向下钻取到显示列表的 OverviewView,然后从那里通过 NavigationLink 到 DetailView。现在我想点击 DetailView 中的文本并调出另一个视图,但是当我现在尝试向该对象添加 NavigationLink 时,我收到一个错误,即 NavigationLink 需要嵌入到 NavigationView 中,因此我将代码更改为

    NavigationView{  
  ScrollView() {  
  VStack{  
  VStack(spacing: -25) {  
  HStack(spacing: -25) {  
  NavigationLink(destination: WarehouseOrderLinesView(warehouseOrderLines: warehouseOrderLineController.warehouseOrderLines)){  
  TaskSummaryView(title: "Total Lines", color: .blue, icon: "list.dash", value: warehouseOrderLineController.warehouseOrderLines.count)  
  } 

但现在由于另一个 NavigationView 中有一个 NavigationView,我最终在顶部有 2 个导航栏。

2个导航栏

有没有办法使用 NavigationLink 而不将其嵌入另一个 NaviagationView 或通过不使用 NavigationLink 和类似 .sheet 的东西导航到另一个视图(我不想将新视图显示为模态!)。

下面是完整的测试示例代码:


//  
//  ContentView.swift  
//  Two Navbars  
//  
//  Created by Max on 2020-02-05.  
//  Copyright © 2020 Max. All rights reserved.  
//  

import SwiftUI  

struct ContentView: View {  
  var body: some View {  
  NavigationView{  
  ScrollView{  
  VStack{  
  NavigationLink(destination: ListView1()){  
  Text("Tap me")  
  }  

  Text("Nothing here")  
  }  
  }  
  }  
  }  
}  

struct ListView1: View {  

  var body: some View {  
  List{  
  NavigationLink(destination: DetailView1()){  
  Text("Tap me one more time")  
  }  

  Text("Item 2")  
  Text("Item 3")  
  }  
  }  
}  

struct DetailView1: View {  

  var body: some View {  
  NavigationView{  
  ScrollView() {  
  VStack{  
  NavigationLink(destination: DetailView2()){  
  Text("Drill down more")  
  }  
  Text("Nothing here")  
  }  
  }  
  }  
  }  
}  

struct DetailView2: View {  

  var body: some View {  
  List {  
  Text("That's it")  
  Text("Nothing here")  
  }  
  }  
}  




struct ContentView_Previews: PreviewProvider {  
  static var previews: some View {  
  ContentView()  
  }  
}  
4

1 回答 1

3

在根视图中只需要 1 个 NavigationView。删除 DetailView1 中的那个。

struct DetailView1: View {  
    var body: some View {  
        ScrollView(){  
            VStack {  
                NavigationLink(destination: DetailView2()){  
                    Text("Drill down more")  
                }  
                Text("Nothing here")  
            }  
         }  
      }  
  }  
}  
于 2020-02-18T05:33:50.727 回答