SwiftUI:当用户在第一个ScrollView中点击该项目时,在特定索引处加载第二个ScrollView

问题描述 投票:0回答:2

这种情况是,当用户在第一个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加载到特定索引。又名,在第一张图像列表中选择一张图像,然后打开第二张图像...

ios uiscrollview swiftui
2个回答
0
投票

您需要将图像(名称/ id)传递给图纸,然后使用图纸中的信息显示按下的图像。可以找到详细的答案here


0
投票

我找到了解决方案,并在我的another post中对其进行了更新。简而言之,我使用的是UIPageView而不是UIScrollView。并将主视图的索引发送到PageView的@State。并在PageView的init()中设置@State值。

© www.soinside.com 2019 - 2024. All rights reserved.