Я использую кнопку в ForEach для запуска события касания (перезагрузки данных текущего представления), когда пользователь выбирает / нажимает любое изображение mov ie в списке прокрутки. Но я обнаружил, что перезагрузка данных запускается даже при перетаскивании или вызове смахиванием в списке прокрутки. Также при нажатии на элемент в списке появляется белый флаг sh.
Итак, как избежать такого поведения, или я должен использовать другой способ запуска касания вместо кнопки? Пожалуйста, дайте намек на это.
/// Вот код
struct RecMovieList: View {
var movies: [MovieViewModel]
var model: MovieListViewModel
var body: some View {
VStack(alignment: .leading) {
Text("\(SecHomeSection.Recomm.rawValue)")
.font(.headline)
ScrollView(.horizontal) {
HStack(alignment: .top, spacing: 10) {
ForEach(0..<movies.count) { i in
VStack(alignment: .leading) {
Button(action: {
self.model.getMovieDetail(id: self.movies[i].id)
self.model.getSecSectionMoviesBundle(id: self.movies[i].id)
}) {
KFImage(source: .network(self.movies[i].posterUrl))
.renderingMode(.original)
.resizable()
.frame(width: 100, height: 150)
.aspectRatio(2/3, contentMode: .fill)
}
Text("\(self.movies[i].title)")
.lineLimit(2)
.foregroundColor(.gray)
.frame(height: 50, alignment: .top)
}.frame(width: 100)
}
}
}
//.frame(height: 100)
}
.padding(.horizontal).padding(.bottom)
}
}
// Обновление , я пытаюсь использовать onTapeGesture
вместо Button
, тогда эта проблема исчезла.
.onTapGesture {
self.model.getMovieDetail(id: self.movies[i].id)
self.model.getSecSectionMoviesBundle(id: self.movies[i].id)
}