NavigationView и NavigationLink не удаляют представления после перехода - PullRequest
1 голос
/ 30 октября 2019

Я пишу приложение, используя SwiftUI, и у меня возникают некоторые проблемы с NavigationView и Navigation Link, как показано ниже в видео симулятора. Проект был создан как Single View App.

У меня есть три страницы, и, как вы можете видеть, когда он переносит меня с одной страницы на другую, он строит вторую страницу под первой, и не• Выделите первую, и у меня та же проблема на третьей странице: она создается ниже второй, и я даже могу вернуться на первую страницу с помощью неисправной кнопки back в левом верхнем углу.

Видео:

demo of the problem

Это код трех страниц:

first.swift

import SwiftUI

struct first: View {
    var body: some View {
        NavigationView{
            NavigationLink(destination: second()) {
                Text("first link")
            }
        }
    }
}

struct first_Previews: PreviewProvider {
    static var previews: some View {
        first()
    }
}

second.swift

import SwiftUI

struct second: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: third()) {
                Text("second link")
            }
        }
    }
}

struct second_Previews: PreviewProvider {
    static var previews: some View {
        second()
    }
}

third.swift

import SwiftUI

struct third: View {
    var body: some View {
        Text("Third page")
    }
}

struct third_Previews: PreviewProvider {
    static var previews: some View {
        third()
    }
}

Я использую Navigation View так же, как это делает официальный учебник Apple (или припо крайней мере, я думаю, что я…) здесь

Спасибо!

Редактировать: У меня все еще остается та же проблема с этим кодом, несмотря наопределен только один NavigationView. Проблема вернулась после того, как я загрузил в Xcode 11.2, но в Замечаниях к выпуску ничего не говорится о каких-либо изменениях, внесенных в NavigationView.

first.swift

import SwiftUI

struct first: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: second()) {
                Text("First link")
            }
        }

    }
}

struct first_Previews: PreviewProvider {
    static var previews: some View {
        first()
    }
}

second.swift

import SwiftUI

struct second: View {
    var body: some View {
        NavigationLink(destination: first()) {
            Text("back to first")
        }
    }
}

struct second_Previews: PreviewProvider {
    static var previews: some View {
        second()
    }
}

Видео:

demo of the problem

Еще раз спасибо!

1 Ответ

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

То, что делает ваш текущий код, - это вложение NavigationView в second внутри одного в first.

Чтобы обойти это, вам просто нужно удалить NavigationView в second:

struct second: View {
    var body: some View {
        NavigationLink(destination: third()) {
            Text("second link")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...