【问题标题】:SwiftUI Nested NavigationViews show multiple navigation barsSwiftUI Nested NavigationViews 显示多个导航栏
【发布时间】:2020-01-30 17:02:49
【问题描述】:

我的 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 个导航栏。

有没有办法使用 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()  
  }  
}  

【问题讨论】:

    标签: swiftui-navigationlink


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2020-08-28
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多