我正在尝试使用以下代码获取上下文菜单以导航到另一个视图
var body: some View
{
VStack
{
Text(self.event.name).font(.body)
...
Spacer()
NavigationLink(destination: EditView(event: self.event))
{
Image(systemName: "pencil")
}
}
.navigationBarTitle(Text(appName))
.contextMenu
{
NavigationLink(destination: EditView(event: self.event))
{
Image(systemName: "pencil")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在NavigationLink该范围内VStack的作品如预期,并导航到编辑的看法,但我想用一个contextMenu。虽然上下文菜单显示图像,但当我点击它时,它不会导航到编辑视图,而是只是取消上下文菜单。
我正在手表应用程序中执行此操作,但不认为这应该有所作为,我与上下文菜单导航有什么特别的关系吗?
小智 4
我将使用isActiveNavigationLink 的变体,您可以通过设置状态变量来触发它。Apple 在此记录了这一点
这种变体NavigationLink非常适合动态/程序导航。
您.contextMenu将状态变量设置为 true 并激活NavigationLink. 因为您不希望链接可见,所以将label视图设置为EmptyView
这是一个示例,与您的帖子不完全相同,但希望能清楚地说明这一点。
struct ContentView: View {
@State private var showEditView = false
var body: some View {
NavigationView {
VStack {
Text("Long Press Me")
.contextMenu {
Button(action: {
self.showEditView = true
}, label: {
HStack {
Text("Edit")
Image(systemName: "pencil")
}
})
}
NavigationLink(destination: Text("Edit Mode View Here"), isActive: $showEditView) {
EmptyView()
}
}
.navigationBarTitle("Context Menu")
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1835 次 |
| 最近记录: |