Представление списка создает все подробные представления заранее - PullRequest
0 голосов
/ 18 октября 2019

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

NavigationView {
  List {
    ForEach(items) { item in
      NavigationLink(destination: DetailView(item: item)) {
        DetailRow(item: item)
      }
    }
  }
}

Очевидно, что все подробные представления создаются при создании представления списка. Я думаю, что это проблематично с точки зрения производительности и использования памяти. Я предпочел бы иметь один объект подробного просмотра, а затем установить для него значения элементов, когда выбран конкретный элемент.

Но я не могу понять, как это сделать. Или вышеприведенный способ действительно хорошая реализация?

1 Ответ

3 голосов
/ 18 октября 2019

SwiftUI гарантирует, что все будет эффективно. Нет необходимости беспокоиться об этом;по крайней мере, не в этом простом примере. (Оптимизация может потребоваться с продвинутой анимацией, как упомянуто в конце в этом выступлении WWDC .)

Код SwiftUI - это структурная спецификация, которая анализируется и выполняется во время выполнения. Таким образом, ваше предположение «все подробные представления создаются при создании представления списка» не соответствует действительности.

Вы можете прочитать об этом здесь .

Итак, ваш кодпрекрасно и оптимально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...