4

想知道其他人是否有这个问题,以及是否找到了解决方法。这在 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")
                }
            }
        }
    }
}

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

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

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

4

1 回答 1

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")
                    }
                }
            }
        }
    }
}
于 2020-08-04T15:36:21.547 回答