Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- final class UserData: BindableObject {
- let didChange = PassthroughSubject<UserData, Never>()
- var image: UIImage? = nil {
- didSet {
- didChange.send(self)
- }
- }
- }
- struct ContentView : View {
- @EnvironmentObject var userData: UserData
- var body: some View {
- NavigationView {
- VStack {
- if userData.image != nil {
- Image(uiImage: userData.image!)
- }
- PresentationButton(Text("Import photo"), destination: ImagePicker().environmentObject(userData))
- }
- }
- }
- }
- struct ImagePickerViewController: UIViewControllerRepresentable {
- @Binding var image: UIImage?
- func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<ImagePickerViewController>) {
- }
- func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePickerViewController>) -> UIImagePickerController {
- let imagePicker = UIImagePickerController()
- imagePicker.sourceType = UIImagePickerController.SourceType.photoLibrary
- imagePicker.allowsEditing = false
- imagePicker.delegate = context.coordinator
- return imagePicker
- }
- func makeCoordinator() -> Coordinator {
- return Coordinator(self)
- }
- class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
- var parent: ImagePickerViewController
- init(_ parent: ImagePickerViewController) {
- self.parent = parent
- }
- func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
- let imagePicked = info[.originalImage] as! UIImage
- parent.image = imagePicked
- picker.dismiss(animated: true, completion: nil)
- }
- }
- }
- struct ImagePicker : View {
- @EnvironmentObject var userData: UserData
- var body: some View {
- ImagePickerViewController(image: $userData.image)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement