NavigationLink в ContextMenu больше не работает в iOS14 xcode12 beta3? - PullRequest
0 голосов
/ 04 августа 2020

Интересно, есть ли у кого-нибудь еще эта проблема и найдено ли обходное решение. Это отлично работает в iOS 13, но кажется неработающим в iOS 14. Я просто пытаюсь отключить NavigationLink для другого View из .contextMenu.

Мой код такой, как показано ниже.

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».

Если я щелкаю не значок, связанный в стеке, это отлично запускает навигацию. Но такой же ссылки в контекстном меню нет. Когда я выбираю его в контекстном меню, ничего не происходит. Т.е. я могу выбрать пункт меню, но все, что он делает, - это закрывать контекстное меню, и я остаюсь в том же виде.

Кто-нибудь еще нашел это? решил это? Спасибо

1 Ответ

0 голосов
/ 04 августа 2020

Вот демонстрация возможного подхода. Протестировано с 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")
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...