Как вы можете видеть на видео, если я прокрутлю длинную левую сторону (пока она липкая), а затем переключусь на короткую правую сторону , StickyHeader теряет свою закрепленную позицию. Есть ли способ предотвратить это? Я уже пробовал несколько вещей, но безуспешно. (Например, прокси-сервер GeometryReaders, который вручную прокручивается вверх, как только я переключаю кран)
Насколько я понимаю, проблема заключается в ContentHeight ScrollViews, который не обновляется. правильно. Это очень хорошо заметно, поскольку ScrollViewIndicator также не получает визуального обновления по своей длине.
Можно ли этого достичь, или PickerView не предназначен для работы в списке из нескольких Разделы вообще? Есть ли способ обновить ScrollView ContentHeight таким образом, чтобы StickyHeader сохранял свое положение?
Любой подсказка очень ценится!
Я' Мы также добавили видео и исходный код для справки.

struct ContentView: View {
@State private var tab = 0
var body: some View {
VStack(spacing: 0) {
let cols = [GridItem(.flexible())]
ScrollView {
LazyVGrid(columns: cols, pinnedViews: [.sectionHeaders]) {
Section {
ForEach(1...2, id: \.self) { count in
Text("Section 1 Item \(count)")
.frame(maxWidth: .infinity, alignment: .leading)
.padding().border(Color.blue)
}
} header: {
Text("Section 1")
.frame(maxWidth: .infinity, minHeight: 50, alignment: .center)
.background(Color.blue)
}
Section {
if tab == 0 {
ForEach(10...20, id: \.self) { count in
Text("Section 2 Tab 0 Item \(count)")
.frame(maxWidth: .infinity, alignment: .leading)
.padding().border(Color.purple)
}
}
if tab == 1 {
ForEach(3...5, id: \.self) { count in
Text("Section 2 Tab 1 Item \(count)")
.frame(maxWidth: .infinity, alignment: .leading)
.padding().border(Color.purple)
}
}
} header: {
Picker("", selection: $tab) {
Text("Long").tag(0)
Text("Short").tag(1)
}
.pickerStyle(.segmented).padding().background(Color.purple)
}
}
LazyVGrid(columns: cols) {
Section {
ForEach(30...50, id: \.self) { count in
Text("Section 3 Item \(count)")
.frame(maxWidth: .infinity, alignment: .leading)
.padding().border(Color.green)
}
} header: {
Text("Section 3")
.frame(maxWidth: .infinity, minHeight: 50, alignment: .center)
.background(Color.green)
}
}
}
}
.font(.caption)
}
}
#Preview {
ContentView()
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... scrollview