SwiftUI (список и для каждого): поворот устройства приводит к потере текущей позиции в списке

#list #dynamic #foreach #swiftui #rotation

#Список #динамический #foreach #swiftui #поворот

Вопрос:

С помощью приведенного ниже кода SwiftUI (Xcode 12.2) после прокрутки списка в заданной строке поворот устройства вызывает переход к другой строке.

 import SwiftUI

struct ContentView: View {
    var body: some View {
        List(10...90, id: .self) { i in
            VStack {
                ForEach(1...9, id: .self) { j in
                    Text("item (i).(j)")
                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
 

Пожалуйста, как сделать отображение текущей строки не чувствительным к повороту устройства?

Эта проблема появляется только при прокрутке списка между каждым поворотом.

введите описание изображения здесь

Ответ №1:

Я думаю, что это как-то связано со смещением списка, я не совсем уверен, почему. Решением может быть использование ScrollView вместо этого, что кажется более динамичным.

 var body: some View {
    ScrollView {
        ForEach(10...90, id: .self) { i in
            VStack {
                ForEach(1...9, id: .self) { j in
                    Text("item (i).(j)")
                }
            }
            .frame(maxWidth: .infinity, alignment: .leading)
            Divider()
        }
    }
}