49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  ImagePicker.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 2023/08/09.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
 | 
						|
struct ImagePicker: UIViewControllerRepresentable {
 | 
						|
    
 | 
						|
    @Binding var isShowing: Bool
 | 
						|
    @Binding var selectedImage: UIImage?
 | 
						|
    
 | 
						|
    let sourceType: UIImagePickerController.SourceType
 | 
						|
    
 | 
						|
    func makeUIViewController(context: Context) -> UIImagePickerController {
 | 
						|
        let picker = UIImagePickerController()
 | 
						|
        picker.delegate = context.coordinator
 | 
						|
        return picker
 | 
						|
    }
 | 
						|
    
 | 
						|
    func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {
 | 
						|
    }
 | 
						|
    
 | 
						|
    func makeCoordinator() -> Coordinator {
 | 
						|
        return Coordinator(self)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
 | 
						|
    let parent: ImagePicker
 | 
						|
    
 | 
						|
    init(_ parent: ImagePicker) {
 | 
						|
        self.parent = parent
 | 
						|
    }
 | 
						|
    
 | 
						|
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
 | 
						|
        if let image = info[.originalImage] as? UIImage {
 | 
						|
            parent.selectedImage = image
 | 
						|
            parent.isShowing = false
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
 | 
						|
        parent.isShowing = false
 | 
						|
    }
 | 
						|
}
 |