В 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)
}
}
}
}