SwiftUI: список прокручивается вверх при выборе строки, когда есть `.id (UUID ())` - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть список с выбором строк и панель поиска. Панель поиска замораживает список , но я исправил это, используя id(UUID())

Это создало еще одну проблему, в которой, когда пользователь нажимает на строку, прокрутка переходит наверх . Иногда при выборе нескольких строк вылетает с этой ошибкой: precondition failure: attribute failed to set an initial value: 96

struct ContentView: View {

@ObservedObject var viewModel = ViewModel()
@State private var searchText: String = ""
@State private var selected = Set<Model>()

var body: some View {
    VStack {
        SearchBar(text: $searchText, placeholder: "Search")
        List(
            viewModel.strings.filter({ searchText.isEmpty ? true : $0.title.lowercased().contains(searchText.lowercased()) })
        , selection: $selected) { model in
            MultipleSelectionRow(selectedItems: self.$selected, model: model)
        }
        .id(UUID()) /// This line causes strange behaviour.
    }
  }
}

Полный проект доступен на GitLab с другими скринкастами и файлами, такими как выбор view, панель поиска и viewModel. Screencast shows jumping scroll view

...