import SwiftUI struct ImagePickerView: View { @Binding var showImagePicker: Bool private let selected: (ImageResource) -> Void @EnvironmentObject private var content: Content @Environment(\.language) private var language init(showImagePicker: Binding, selected: @escaping (ImageResource) -> Void) { self._showImagePicker = showImagePicker self.selected = selected } @State private var selectedImage: ImageResource? var body: some View { VStack { Text("Select the image to add") List(content.images, selection: $selectedImage) { image in Text("\(image.id)") .tag(image) } .frame(minHeight: 300) HStack { Button("Add") { DispatchQueue.main.async { if let selectedImage { print("Added image") selected(selectedImage) } else { print("No image to add") } } showImagePicker = false } .disabled(selectedImage == nil) Button("Cancel", role: .cancel) { showImagePicker = false } } } .navigationTitle("Pick an image") .padding() } } #Preview { ImagePickerView(showImagePicker: .constant(true)) { _ in } .environmentObject(Content.mock) }