Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. final class UserData: BindableObject {
  2. let didChange = PassthroughSubject<UserData, Never>()
  3.  
  4. var image: UIImage? = nil {
  5. didSet {
  6. didChange.send(self)
  7. }
  8. }
  9. }
  10.  
  11. struct ContentView : View {
  12. @EnvironmentObject var userData: UserData
  13.  
  14. var body: some View {
  15. NavigationView {
  16. VStack {
  17. if userData.image != nil {
  18. Image(uiImage: userData.image!)
  19. }
  20. PresentationButton(Text("Import photo"), destination: ImagePicker().environmentObject(userData))
  21. }
  22. }
  23. }
  24. }
  25.  
  26. struct ImagePickerViewController: UIViewControllerRepresentable {
  27. @Binding var image: UIImage?
  28.  
  29. func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<ImagePickerViewController>) {
  30. }
  31.  
  32. func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePickerViewController>) -> UIImagePickerController {
  33. let imagePicker = UIImagePickerController()
  34. imagePicker.sourceType = UIImagePickerController.SourceType.photoLibrary
  35. imagePicker.allowsEditing = false
  36. imagePicker.delegate = context.coordinator
  37. return imagePicker
  38. }
  39.  
  40. func makeCoordinator() -> Coordinator {
  41. return Coordinator(self)
  42. }
  43.  
  44. class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  45.  
  46. var parent: ImagePickerViewController
  47.  
  48. init(_ parent: ImagePickerViewController) {
  49. self.parent = parent
  50. }
  51.  
  52. func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
  53. let imagePicked = info[.originalImage] as! UIImage
  54. parent.image = imagePicked
  55. picker.dismiss(animated: true, completion: nil)
  56. }
  57. }
  58. }
  59.  
  60. struct ImagePicker : View {
  61. @EnvironmentObject var userData: UserData
  62.  
  63. var body: some View {
  64. ImagePickerViewController(image: $userData.image)
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement