SwiftUI - содержимое NavigationLink загружено слишком рано - PullRequest
3 голосов
/ 04 февраля 2020

Я старший iOS разработчик с опытом работы с UIKit. Я пытаюсь создать тестовое приложение с пользовательским интерфейсом Swift.

У меня есть список основных c в моем первом просмотре следующим образом:

func buildList(sections: [Client]) -> some View {
    let list = List {
        ForEach(sections) { client in
            Section(header: Text(client.name)) {
                ForEach(client.projects) { project in
                    NavigationLink(destination: BuildsRouter.build(forProject: project)) {
                        HStack {
                            Text("Test \(project.id)").fontWeight(.ultraLight)
                        }
                    }
                }
            }
        }
    }
    return  list
}

Я использую NavigationLink для предоставить подробное представление для моего Project объекта.

Дело в том, что когда я делаю график анализа памяти, я вижу, что BuildsView (созданные из BuildsRouter.build(forProject: project) созданы , прежде чем я фактически коснусь Навигация по ссылке .

Вопрос: Можно ли создать представление сведений после того, как ссылка нажата?

1 Ответ

0 голосов
/ 06 мая 2020

Правда, я написал пост в блоге на этом . В качестве обходного пути вы можете обернуть конечные виды в Ленивый Контейнер. Обновление: от Xcode 11.4.1 NavigationLinks по умолчанию ленивы.

...