ContextMenu 中的 NavigationLink 在 iOS14 xcode12 beta3 中不再工作?

Cal*_*nOz 5 contextmenu swiftui swiftui-navigationlink ios14 xcode12

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

我的代码如下。

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")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

如果我没有单击堆栈中关联的图标,则会完美触发导航。但上下文菜单中的相同链接却没有。当我在上下文菜单中选择它时,什么也没有发生。即,我可以选择菜单项,但它所做的只是关闭上下文菜单,并且我保持在同一视图上。

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

Asp*_*eri 1

这是可能方法的演示。使用 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")
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)