SwiftUI: загрузка 2-го ScrollView с указанным индексом c, когда пользователь нажал на этот элемент в 1-м ScrollView - PullRequest
0 голосов
/ 15 апреля 2020

Сценарий таков: загрузка 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)
        }

    }
}

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Я нашел решение и обновил его в своем другом посте . Проще говоря, я использую UIPageView вместо UIScrollView. И отправка индекса основного представления в @State PageView. И установите значение @State в init () для PageView.

0 голосов
/ 16 апреля 2020

Вам необходимо передать изображение (имя / идентификатор) на лист, а затем использовать информацию на листе для отображения нажатого изображения. Подробный ответ можно найти здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...