Swiftui ScrollViewreader несколько ScrollTo в разных Foreach
Я не могу сделать много .scrollTo() в моем коде: (я француз, извините за мой плохой английский)
else if index == 1 {
withAnimation {
value.scrollTo(topID)
}
}
моя проблема в value.scrollTo(topID) Я попытался реализовать 6 из них в 3 разных foreach, и компилятор не компилируется, но если я удалю value.scrollTo(topID) одного из Foreach, он компилирует
else if wichView.SelectedView == 5 {
HStack {
ForEach(1..<6) { index in
Spacer()
Button(action: {
if index == 3 {
withAnimation() {
wichView.SelectedView = 1
wichView.carouselLocation = 0
}
value.scrollTo(topID)
}
else if index == 1 {
withAnimation {
value.scrollTo(topID)
}
}
},
label: {
Image("IPPV5_TABBITEM\(index)")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 40,
height: 40)
})
}
Spacer()
}
.padding(.bottom, -10)
.frame(width: size.width,
height: 35)
}
else if wichView.SelectedView == 6 {
HStack(spacing: size.width/3 - 10) {
Button(action: {
withAnimation {
value.scrollTo(topID)
}
},
label: {
Image("IPPV6-TABITEM1")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 40,
height: 40)
})
Button(action: {
wichView.SelectedView = 1
wichView.carouselLocation = 0
value.scrollTo(topID)
},
label: {
Image("IPPV6-TABITEM2")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 40,
height: 40)
})
Spacer()
}
.padding(.bottom, -10)
.frame(width: size.width - 40,
height: 35)
}
else if wichView.SelectedView == 8 {
IPPV8TabItem
}
else if wichView.SelectedView == 9 {
HStack {
ForEach(1..<6) { index in
Spacer()
Button(action: {
if index == 3 {
withAnimation {
wichView.SelectedView = 1
}
wichView.carouselLocation = 0
// withAnimation {
// value.scrollTo(topID)
// }
}
else if index == 1 {
// withAnimation {
// value.scrollTo(topID)
//}
}
},
label: {
Image("IPPV9-\(index)")
.resizable()
.aspectRatio(contentMode: .fit)
})
}
Spacer()
}
.frame(width: size.width,
height: 40)
}
Это часть моего кода (все находится в ScrollView, который находится в Scrollviewreader, который находится в Vstack, который находится в Zstack)
Этот код работает нормально и компилируется, потому что я прокомментировал .scrollTo() одного из Foreach, если я декомпилирую его, он не будет компилироваться.
Любая помощь, пожалуйста, я не знаю, проблема в Foreachs или .scrollTo()?
1 ответ
Наконец я сделал что-то вроде
else if wichView.SelectedView == 9 && wichView.SelectedView == 5
чтобы объединить оба условия и использовать один и тот же .scrolLTo, он работает, поэтому я не понимаю, почему он не компилируется раньше в разных Foreach