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

时间:2020-08-04 11:03:39

标签: swiftui contextmenu 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")
                }
            }
        }
    }
}

目标TestView()只是样板“ Hello World”视图。

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

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

1 个答案:

答案 0 :(得分:2)

这里是可能方法的演示。在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")
                    }
                }
            }
        }
    }
}