Я бы использовал вариант isActive
NavigationLink, который вы можете вызвать, установив переменную состояния. 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")
}
}
}