NavigationLink 在 iPad 上的奇怪行为

Weird behavior of NavigationLink on iPad

在我的应用程序中,我有一个滚动视图,其中包含嵌入在导航视图中的导航链接。在 iPad 上,按下 NavigationLinks 会导致一些奇怪的事情发生。第一次按下其中一个项目时,它工作得很好,并显示详细视图。对其他项目的任何后续按下要么什么都不做,要么显示先前按下的项目的详细视图。有时它会连续处理几个项目,但随后又会冻结。

导航栈好像有问题?

此简化示例显示了 11" iPad pro 运行 iOS 13.7

上的错误
struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                ForEach(0..<20) { index in
                    NavigationLink(destination: Text("\(index)")) {
                        Text("\(index)")
                            .padding()
                            .frame(width: 100, height: 100)
                            .background(Color.green)
                    }
                }
            }
        }
    }
}

是的,它看起来像一个错误。您可以向 Apple 提交反馈。

同时,这里有一个可能的解决方法。使用 Xcode 11.7 / iOS 13.7

测试
struct ContentView: View {
    @State private var selection = -1
    @State private var isActive = false

    var body: some View {
        NavigationView {
            ScrollView {
                ForEach(0..<20) { index in
                    Button(action: {
                        self.selection = index
                        self.isActive = true
                    } ) {
                        Text("\(index)")
                            .padding()
                            .frame(width: 100, height: 100)
                            .background(Color.green)
                    }
                }
            }
            .background(NavigationLink(destination: Text("\(selection)"),
                isActive: $isActive) { EmptyView() })
        }
    }
}