 
 }
 
+extension OmnibarScreen: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
+    func imagePickerController(_ controller: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {
+        guard
+            let image = info[UIImagePickerControllerOriginalImage] as? UIImage
+        else {
+            delegate?.omnibarDismissController()
+            return
+        }
+
+        if let url = info[UIImagePickerControllerReferenceURL] as? URL,
+            let asset = PHAsset.fetchAssets(withALAssetURLs: [url], options: nil).firstObject
+        {
+            AssetsToRegions.processPHAssets([asset]) { imageData in
+                for imageDatum in imageData {
+                    self.addImage(imageDatum.image, data: imageDatum.data, type: imageDatum.contentType)
+                }
+            }
+            delegate?.omnibarDismissController()
+        }
+        else {
+            image.copyWithCorrectOrientationAndSize { image in
+                if let image = image {
+                    self.addImage(image, data: nil, type: nil)
+                }
+
+                self.delegate?.omnibarDismissController()
+            }
+        }
+    }
+
+    func imagePickerControllerDidCancel(_ controller: UIImagePickerController) {
+        delegate?.omnibarDismissController()
+    }
+}
+
 extension OmnibarScreen: HasBackButton {
     func backButtonTapped() {
         delegate?.omnibarCancel()

    @objc
    func openNativeCameraTapped() {
        let controller = UIImagePickerController.elloCameraPickerController
        delegate?.omnibarPresentController(controller)
        resetToImageButton()
    }

        options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
        options.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.image.rawValue)

        options.fetchLimit = imageFetchLimit + 1

        let requestOptions = PHImageRequestOptions()
        requestOptions.isSynchronous = false
