Swiftui 迅捷导航问题';集团';不解决

Swiftui 迅捷导航问题';集团';不解决,swiftui,navigationview,navigationlink,Swiftui,Navigationview,Navigationlink,环境:Xcode 11.1在Catalina(19A573a)上运行,并构建仅限iOS的应用程序 我有以下代码,应该相当简单。 -我有按钮A-H(8个按钮) -当我点击一个按钮时,我希望看到相应的视图(“视图a”、“视图B”等),因为它们嵌入在NavigationView中 我遇到了几个问题 -在显示代码的情况下,点击“视图A”的按钮除了其他按钮外什么也不做。 -在重新运行几次后,点击按钮a会工作几次,但大部分时间失败 -如果我禁用除按钮A外的所有按钮的显示,点击按钮A可以工作。 -如果我禁用任

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

我有以下代码,应该相当简单。 -我有按钮A-H(8个按钮) -当我点击一个按钮时,我希望看到相应的视图(“视图a”、“视图B”等),因为它们嵌入在NavigationView中

我遇到了几个问题 -在显示代码的情况下,点击“视图A”的按钮除了其他按钮外什么也不做。 -在重新运行几次后,点击按钮a会工作几次,但大部分时间失败 -如果我禁用除按钮A外的所有按钮的显示,点击按钮A可以工作。 -如果我禁用任何单个按钮的显示(同样有8个按钮,A-H),则点击第一个按钮即可

  • 我知道VStack中有超过10个视图的技术限制,我尝试了这里提出的建议: 但这是行不通的

  • 我尝试过将按钮放入列表中的各种方法,但都不起作用

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


打开“调试视图层次结构”时,您会注意到视图A被不可见的导航栏完全阻挡,即使它不可见,也会阻止所有触摸到达视图A


打开“调试视图层次结构”时,您会注意到视图A被不可见的导航栏完全阻挡,即使它不可见,也会阻止所有触摸到达视图A


你不会喜欢这种情况-我当然不喜欢-但是(1)我可以验证这种行为在物理iPhone和iPad设备上都存在,并且(2)使用
组,以不同的方式使用,或者重新排列按钮顺序无关紧要。。。不管怎样,第一个按钮都无法导航到正确的链接。你猜怎么着?有一种方法是有效的-删除
基本按钮
中的
填充
修饰符。是的,这对我来说完全没有意义……我之所以发现这一点,是因为在运行iOS 13.1的iPhone7 Plus上,顶部的按钮对齐得太高了。(我甚至尝试先更改边框高度,但这只会使按钮之间的“填充”变大。你不会喜欢这种情况-我当然不会-但是(1)我可以验证物理iPhone和iPad设备上是否存在这种行为,以及(2)使用
分组
,以不同的方式使用,或者重新排列按钮顺序都不重要…不管怎样,第一个按钮都无法导航到正确的链接。猜猜怎么着?有一点很有效-删除
基本按钮
中的
填充
修饰符。是的,这对我来说完全没有意义…我只是想这是因为在我运行iOS 13.1的iPhone7 Plus上,顶部的按钮对齐得太高了(我甚至尝试先更改边框高度,但这只会使按钮之间的“填充”变大)。
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)
    }
}