05/11 Update issue image upload
This commit is contained in:
@@ -578,6 +578,53 @@ struct LibraryPickerView: UIViewControllerRepresentable {
|
||||
}
|
||||
}
|
||||
|
||||
// ── Multi-image Library Picker — PHPickerViewController with configurable limit ─
|
||||
|
||||
struct MultiLibraryPickerView: UIViewControllerRepresentable {
|
||||
/// Maximum number of images the user may select in this session.
|
||||
var selectionLimit: Int
|
||||
var onSelected: ([UIImage]) -> Void
|
||||
|
||||
func makeUIViewController(context: Context) -> PHPickerViewController {
|
||||
var config = PHPickerConfiguration()
|
||||
config.filter = .images
|
||||
config.selectionLimit = selectionLimit
|
||||
let picker = PHPickerViewController(configuration: config)
|
||||
picker.delegate = context.coordinator
|
||||
return picker
|
||||
}
|
||||
|
||||
func updateUIViewController(_ vc: PHPickerViewController, context: Context) {}
|
||||
func makeCoordinator() -> Coordinator { Coordinator(self) }
|
||||
|
||||
class Coordinator: NSObject, PHPickerViewControllerDelegate {
|
||||
let parent: MultiLibraryPickerView
|
||||
init(_ parent: MultiLibraryPickerView) { self.parent = parent }
|
||||
|
||||
func picker(_ picker: PHPickerViewController,
|
||||
didFinishPicking results: [PHPickerResult]) {
|
||||
picker.dismiss(animated: true)
|
||||
guard !results.isEmpty else { return }
|
||||
|
||||
var images: [UIImage] = []
|
||||
let group = DispatchGroup()
|
||||
|
||||
for result in results {
|
||||
guard result.itemProvider.canLoadObject(ofClass: UIImage.self) else { continue }
|
||||
group.enter()
|
||||
result.itemProvider.loadObject(ofClass: UIImage.self) { object, _ in
|
||||
if let img = object as? UIImage { images.append(img) }
|
||||
group.leave()
|
||||
}
|
||||
}
|
||||
|
||||
group.notify(queue: .main) {
|
||||
self.parent.onSelected(images)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - TableFieldView
|
||||
|
||||
struct TableFieldView: View {
|
||||
|
||||
Reference in New Issue
Block a user