ContextMenu 中的 NavigationLink 在 iOS14 xcode12 beta3 中不再有效?

NavigationLink in ContextMenu no longer working in iOS14 xcode12 beta3?

想知道是否还有其他人遇到此问题,以及是否已找到解决方法。这在 iOS 13 中工作正常,但在 iOS 14 中似乎已损坏。 我只是想将 NavigationLink 从 .contextMenu 触发到另一个视图。

我的代码如下。

import SwiftUI

struct ContentView: View {
    var body: some View {
        
        NavigationView {
            VStack {
                HStack {
                    Text("I am a text in a HStack ")
                }
                HStack {
                    NavigationLink(destination: TestView()) {
                        VStack {
                            Image(systemName:"gauge")
                                .font(.system(size: 31))
                        }
                    }
                }
            }
            .contextMenu {
                NavigationLink(destination: TestView()) {
                    Text("Navigate to TestView")
                    Image(systemName: "pencil")
                }
            }
        }
    }
}

Destination TestView() 只是一个样板“Hello World”视图。

如果我点击的不是堆栈中关联的图标,这会完美触发导航。但是上下文菜单中的相同 link 却没有。 当我在上下文菜单中 select 它时,没有任何反应。也就是说,我可以 select 菜单项,但它所做的只是关闭上下文菜单,而我停留在同一视图上。

还有其他人发现这个吗?解决了吗? 谢谢

这是一个可能的方法演示。使用 Xcode 12b3 / iOS 14 测试(对 SwiftUI 1.0 也有效)

struct ContentView: View {
    @State private var showLink = false

    var body: some View {

        NavigationView {
            VStack {
                HStack {
                    Text("I am a text in a HStack ")
                }
                HStack {
                    NavigationLink(destination: Text("TestView")) {
                        VStack {
                            Image(systemName:"gauge")
                                .font(.system(size: 31))
                        }
                    }
                }
            }
            .background(NavigationLink("", destination: Text("TestView"), isActive: $showLink))
            .contextMenu {
                Button(action: { self.showLink = true }) {
                    HStack {
                        Text("Navigate to TestView")
                        Image(systemName: "pencil")
                    }
                }
            }
        }
    }
}