В приложении swiftui я перебираю массив сущностей и показываю изображения большого пальца и настраиваю его на то, что при нажатии на него отображается подробный вид с этим конкретным полноразмерным изображением. Проблема заключается в том, что при переходе к подробному экрану всегда отображается самое последнее изображение.
Основной вид:
if documents.count > 0 {
ScrollView(.horizontal, showsIndicators: true) {
HStack {
ForEach(documents, id: \.self.id) {(doc: Document) in
Image(uiImage: UIImage(data: doc.image)!)
.resizable()
.frame(width: 40, height: 50, alignment: .center)
.clipShape(Rectangle())
.cornerRadius(8)
.scaledToFit()
.onTapGesture {
self.showImageDetail = true
}
.padding(.all, 5)
.sheet(isPresented: self.$showImageDetail, content: {
ImageViewDetail(image: UIImage(data: doc.image)!)
})
}
}
}
}
Когда отображается ImageDetailView, всегда сохраняется самое последнее изображение. Ниже приведен подробный вид кода:
import SwiftUI
struct ImageViewDetail: View {
@Environment(\.presentationMode) var presentationMode
@State var image: UIImage
@State var scale: CGFloat = 1.0
var body: some View {
VStack {
Image(uiImage: image)
.resizable()
.padding()
.scaledToFit()
.scaleEffect(scale)
.cornerRadius(8)
.gesture(MagnificationGesture()
.onChanged {value in
self.scale = value.magnitude
}
)
HStack {
Button("Back") {
self.presentationMode.wrappedValue.dismiss()
}
.buttonStyle(FillStyle(width: 86, height: 32))
.padding(.trailing, 10)
Button("Delete") {
}
.buttonStyle(FillStyle(width: 86, height: 32))
.padding(.leading, 10)
}
}
.navigationBarTitle("Image", displayMode: .inline)
}
}
Любая помощь будет принята с благодарностью - я не могу понять, почему нужное изображение не отображается в ImageDetailView? Большое спасибо заранее.