SwiftUI导航问题,“组”未解决

问题描述 投票:1回答:1

环境:在Catalina(19A573a)上运行的Xcode 11.1并正在构建仅适用于iOS的应用程序。

我有以下应该很简单的代码。-我有按钮A-H(8个按钮)-当我点击一个按钮时,我希望将其带入各自的视图(“视图A”,“视图B”等),因为它们已嵌入到NavigationView中。

我遇到了几个问题-在显示代码的情况下,轻按“视图A”的按钮不会起作用,而其他按钮则起作用。-重新运行几次后,点击按钮A有时会起作用,但大多数情况下会失败-如果我禁用除按钮A之外的所有其他按钮的显示,请点击按钮A。-如果我禁止显示任何单个按钮(同样有8个按钮,A-H),则点击第一个按钮即可。

任何要测试的人都可以创建一个新项目,并将整个代码内容复制到ContentView.swift文件中并运行。Example

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            HStack {
                Spacer()

                VStack {
                    Spacer()

                    Group {
                        NavigationLink(destination: ViewA()) {
                            BasicButton(buttonName: "View A", buttonColor: .orange)
                        }

                        NavigationLink(destination: ViewB()) {
                            BasicButton(buttonName: "View B", buttonColor: .red)
                        }

                        NavigationLink(destination: ViewC()) {
                            BasicButton(buttonName: "View C", buttonColor: .green)
                        }

                        NavigationLink(destination: ViewD()) {
                            BasicButton(buttonName: "View D", buttonColor: .blue)
                        }
                    }

                    Group {
                        NavigationLink(destination: ViewE()) {
                            BasicButton(buttonName: "View E", buttonColor: .pink)
                        }

                        NavigationLink(destination: ViewF()) {
                            BasicButton(buttonName: "View F", buttonColor: .gray)
                        }

                        NavigationLink(destination: ViewG()) {
                            BasicButton(buttonName: "View G", buttonColor: .purple)
                        }

                        NavigationLink(destination: ViewH()) {
                            BasicButton(buttonName: "View H", buttonColor: .yellow)
                        }
                    }

                    Spacer()
                }

                Spacer()
            }
            .background(Color.black).edgesIgnoringSafeArea(.all)
        }
    }
}

struct BasicButton: View {
    var buttonName: String
    var buttonColor: Color

    var body: some View {
        Text(buttonName)
            .font(.title)
            .multilineTextAlignment(.center)
            .foregroundColor(.white)
            .frame(width: 300, height: 60)
            .background(buttonColor)
            .cornerRadius(5)
            .padding()
    }
}

struct ViewA: View {
    var body: some View {
        Text("View A").font(.largeTitle)
    }
}

struct ViewB: View {
    var body: some View {
        Text("View B").font(.largeTitle)
    }
}

struct ViewC: View {
    var body: some View {
        Text("View C").font(.largeTitle)
    }
}

struct ViewD: View {
    var body: some View {
        Text("View D").font(.largeTitle)
    }
}
struct ViewE: View {
    var body: some View {
        Text("View E").font(.largeTitle)
    }
}

struct ViewF: View {
    var body: some View {
        Text("View F").font(.largeTitle)
    }
}

struct ViewG: View {
    var body: some View {
        Text("View G").font(.largeTitle)
    }
}

struct ViewH: View {
    var body: some View {
        Text("View H").font(.largeTitle)
    }
}
swiftui navigationview navigationlink
1个回答
0
投票

当您打开Debug View Hierarchy时,您会注意到一个不可见的NavigationBar完全阻塞了View A,即使它不可见,它也阻止了所有触摸到达View A。

View Hierarchy

© www.soinside.com 2019 - 2024. All rights reserved.