SwiftUI Навигация по нескольким экранам - PullRequest
0 голосов
/ 29 октября 2019

Я немного запутался в том, как работает навигация в SwiftUI. Нужен ли NavigationView только вид, начинающий навигацию? У меня есть один вид с NavigationView, который имеет NavigationLink для второго вида. Второй вид затем имеет NavigationLink к третьему и последнему виду.

Однако, когда мой второй вид переходит к третьему, в журналах появляется следующее сообщение:

unbalanced calls to begin/end appearance transitions for <_TtGC7SwiftUI19UIHostingControllerVS_7AnyView_: 0x7f85d844bf90>.

Я не знаю,правильно управляя навигацией по нескольким экранам, и я получаю действительно странное поведение, когда нажатие кнопки «Далее» на втором экране как-то возвращает меня к моему первому ...

//This is the link in my first view, my seconds link is the same except it does to my next step and the tag is different
NavigationLink(
    destination: PasswordView(store: self.store),
    tag: RegisterState.Step.password,
    selection: .constant(store.value.step)
)

1 Ответ

1 голос
/ 29 октября 2019

Навигация немного сложна в SwiftUI, после создания одного вида навигации вам не нужно создавать заново в вашем втором или третьем представлении. Я не уверен, как вы создаете это в первую очередь. Вот пример того, как работает навигация.

import SwiftUI

struct ContentView: View {
       var body: some View {
            NavigationView {
                VStack {
                    NavigationLink(destination: SecondView()) {
                    Text("Show Second View")
                }.navigationBarTitle("FirstView", displayMode: .inline)
            }
        }
    }
}

struct SecondView: View {
    var body: some View {
        NavigationLink(destination: ThirdView()) {
            Text("Show Third view")
        }.navigationBarTitle("SecondView", displayMode: .inline)
    }    
}

struct ThirdView: View {
    var body: some View {
        Text("This is third view")
            .navigationBarTitle("ThirdView", displayMode: .inline)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...