我的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之类的内容导航到另一个视图(我不想将新视图显示为模态!)。 / p>
下面是用于测试的完整示例代码:
//
// 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()
}
}
答案 0 :(得分:1)
在根视图上只需要1个NavigationView。删除DetailView1中的一个。
struct DetailView1: View {
var body: some View {
ScrollView(){
VStack {
NavigationLink(destination: DetailView2()){
Text("Drill down more")
}
Text("Nothing here")
}
}
}
}
}