Swift: Какие свойства оболочки использовать в этой ситуации? - PullRequest
0 голосов
/ 22 марта 2020

В EditGridView у меня есть сетка ContentContainers.

Каждый ContentContainer содержит либо (1) пустой сборщик изображений (2) Image.

То, что я хочу, чтобы это произошло, это следующее: когда я помещаю изображение в ContentContainer, я хочу поместить его в первый пустой ContentContainer. Поэтому, если я помещаю изображение в ContainerContainer (img: album.images [6]), а ContentContainer0, ContentContainer1 и ContentContainer2 заполнены, я хочу, чтобы изображение фактически загружалось в ContentContainer3 и ContentContainer6, чтобы он оставался пустым средством выбора изображений.

Мой вопрос: какой самый простой способ go реализовать это? Я застрял на этом некоторое время.

import SwiftUI

struct EditGridView: View {

    var album: Album       

    var body: some View {


        VStack {

            VStack {


                HStack {
                    Spacer()
                    ContentContainer(img: album.images[0])
                    Spacer()
                    ContentContainer(img: album.images[1])
                    Spacer()
                    ContentContainer(img: album.images[2])
                    Spacer()
                }


                HStack {
                    Spacer()
                    ContentContainer(img: album.images[3])
                    Spacer()
                    ContentContainer(img: album.images[4])
                    Spacer()
                    ContentContainer(img: album.images[5])
                    Spacer()
                }

                HStack {
                    Spacer()
                    ContentContainer(img: album.images[6])
                    Spacer()
                    ContentContainer(img: album.images[7])
                    Spacer()
                    ContentContainer(img: album.images[8])
                    Spacer()
                }

                Spacer()

            }

        }       

    }
}

ContentContainer:

import SwiftUI

struct ContentContainer: View {

    @State private var showingImagePicker = false
    @State private var inputImage: UIImage?

    @State var img: Image?

    init(img: Image?) {
        self.img = img
    }

    func loadImage() {

        guard let inputImage = inputImage else { return }
        img = Image(uiImage: inputImage)
    }

    var body: some View {

        VStack {

            if img == nil {
                RoundedRectangle(cornerRadius: 10, style: .continuous)
                    .frame(width: 100, height: 150)
                    .onTapGesture {
                        self.showingImagePicker = true
                }

            } else {
                img?
                    .resizable()
                    .frame(width: 100, height: 150)
                    .clipShape(
                        RoundedRectangle(cornerRadius: 10, style: .continuous))
                }
            }
        }
        .sheet(isPresented: $showingImagePicker, onDismiss: loadImage) {
            ImagePicker(image: self.$inputImage)
        }

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