这种情况是,当用户在第一个ScrollView中点击该索引项时,将第二个ScrollView加载到特定索引。
同样,在第一张图像列表中选择一张图像,然后打开第二张图像列表,并以全屏显示所选索引图像。
如何在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)
}
}
}
该情况是,当用户在第一个ScrollView中点击该索引项时,将第二个ScrollView加载到特定索引。又名,在第一张图像列表中选择一张图像,然后打开第二张图像...
您需要将图像(名称/ id)传递给图纸,然后使用图纸中的信息显示按下的图像。可以找到详细的答案here。
我找到了解决方案,并在我的another post中对其进行了更新。简而言之,我使用的是UIPageView而不是UIScrollView。并将主视图的索引发送到PageView的@State。并在PageView的init()中设置@State值。