SwiftUI Push-просмотр с навигационной ссылкой из модального представления

#ios #xcode #swiftui

Вопрос:

Я представляю модальный вид fullScreenCover , нажав кнопку «представить мой модальный» .:

 struct ContentView: View {

    @State var presentMyModal = false

    var body: some View {
        Text("Hello, world!")
            .fullScreenCover(isPresented: $presentMyModal) {
                    MyModalView()
            }
        Button(action: { presentMyModal = true },
               label: { Text("present my modal")})
    }
}
 

Затем я хочу создать новый вид NavigationLink с помощью этого модального:

 struct MyAlertView: View {

    @State var pushNavigationLinkedView = false

    var body: some View {
        Text("MyAlertView")
            .padding()
        Button(action: { pushNavigationLinkedView = true },
               label: { Text("push navigation linked view")})

        NavigationLink(destination: NavigationLinkedView(),
                       isActive: $pushNavigationLinkedView) {
            EmptyView()
        }
    }
}
 

И вот мой NavigationLinkedView :

 struct NavigationLinkedView: View {
    var body: some View {
        Text("NavigationLinkedView")
            .padding()
    }
}
 

Но ничего не происходит, когда я нажимаю кнопку «нажать навигационный связанный вид».

Итак, разрешено ли руководством Apple продвигать представление NavigationLink с помощью модального представления ? Если да, то как лучше всего это сделать ?

Протестировано на iOS15 и XCode 13

Ответ №1:

Итак, разрешено ли руководством Apple продвигать представление NavigationLink с помощью модального представления?

ДА. Просто убедитесь, что у вас есть a NavigationView в основе MyAlertView . Модальный лист создает новую иерархию представлений и NavigationLink работает только тогда, когда NavigationView где-то в иерархии выше есть.