Сценарий таков: загрузка 2-го ScrollView с указанным c индексом, когда пользователь нажал на этот элемент индекса в 1-м ScrollView.
Ака, выбрав одно изображение в 1-м списке изображений, затем откройте 2-й список изображений с выбранным индексным изображением отображается в полноэкранном режиме.
Как это сделать в SwiftUI?
/ / / Вот код.
private struct ImageList: View {
var images: [ImageViewModel]
@State private var showSheet = false
@State private var selectedImage = ImageViewModel.default
var body: some View {
VStack(alignment: .leading) {
Text("Images")
.font(.headline)
ScrollView(.horizontal) {
HStack(alignment: .top, spacing: 6) {
ForEach(images, id: \.self) { image in
KFImage(source: .network(image.fileURL))
.resizable()
.frame(width: 200)
.aspectRatio(1.77, contentMode: .fit)
.onTapGesture {
self.selectedImage = image
self.showSheet.toggle()
}
}
}.sheet(isPresented: $showSheet) {
PresentedImageList(images: self.images)
}
}.frame(height: 120)
}
.padding(.horizontal).padding(.bottom)
}
}
private struct PresentedImageList: View {
var images: [ImageViewModel]
var body: some View {
GeometryReader { gr in
ScrollView(.horizontal, showsIndicators: false) {
HStack(alignment: .top, spacing: 6) {
ForEach(self.images, id: \.self) { image in
KFImage(source: .network(image.fileURL))
.resizable()
.frame(width: gr.size.width)
.aspectRatio(1.77, contentMode: .fit)
}
}
}.background(Color.black)
}
}
}