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

Другие вопросы по тегам