Hamza
Hamza

Reputation: 251

Show Cloud storages option in Document Picker view controller in Swift

I'm trying to open cloud storages app in my document picker view controller. I have applied all the necessary delegates method of document picker view controller. When I hit a button it shows me document picker view but the application icons and their name are not shown in it. It only shows browse option in the picker view. I want to show all the storages in front. My code is this,

@IBAction func cloudBtnTapped(_ sender: Any) {

    let importMenu = UIDocumentMenuViewController(documentTypes: [String(kUTTypePDF),String(kUTTypeZipArchive), String (kUTTypePNG), String (kUTTypeJPEG), String (kUTTypeText),String (kUTTypePlainText)], in: .import)
    importMenu.delegate = self
    importMenu.modalPresentationStyle = .fullScreen
    self.present(importMenu, animated: true, completion: nil)
}
 func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {

    cico = url as URL as NSURL
    print("The Url is : /(cico)", cico)

    // Start background thread so that image loading does not make app unresponsive
    DispatchQueue.global(qos: .userInitiated).async {

        let imageData:NSData = NSData(contentsOf: self.cico as URL)!

        // When from background thread, UI needs to be updated on main_queue
        DispatchQueue.main.async {
            let image = UIImage(data: imageData as Data)
            self.image1.image = image
        }
    }

    do {
        let weatherData = try NSData(contentsOf: cico as URL, options: NSData.ReadingOptions())
        let activityItems = [weatherData]
        let activityController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
        if UI_USER_INTERFACE_IDIOM() == .phone {
            self.present (activityController, animated: true, completion: {
                print("Hello")
            })
        }
        else {
            let popup = UIPopoverController(contentViewController: activityController)
            popup.present(from: CGRect(x: CGFloat(self.view.frame.size.width / 2), y: CGFloat(self.view.frame.size.height / 4), width: CGFloat(0), height: CGFloat(0)), in: self.view, permittedArrowDirections: .any, animated: true)
        }
    } catch {
        print(error)
    }
    //optional, case PDF -> render
    //displayPDFweb.loadRequest(NSURLRequest(url: cico) as URLRequest)
}


func documentMenu(_ documentMenu:     UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {

    documentPicker.delegate = self
    present(documentPicker, animated: true, completion: nil)
}

func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {

    print(" cancelled by user")

   // dismiss(animated: true, completion: nil)
    _ = navigationController?.popViewController(animated: true)
}

When hit button it shows document picker view like this,
enter image description here

But I want this . picker view like this,
enter image description here

How can I show this?

Upvotes: 1

Views: 2617

Answers (1)

Mahendra
Mahendra

Reputation: 8914

UIDocumentMenuViewController will automatically shown options like dropbox, google drive is you have installed it on your device, other wise it won't be displayed.

You can also add some custom options to the menu by the following method... addOptionWithTitle:image:order:handler: method.

You can use UIDocumentPickerViewController to get the files from the Files apps or iCloud Drive.

let options = [kUTTypePDF as String, kUTTypeZipArchive  as String, kUTTypePNG as String, kUTTypeJPEG as String, kUTTypeText  as String, kUTTypePlainText as String]

let documentPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(documentTypes: options, in: .import)
documentPicker.delegate = self            
documentPicker.modalPresentationStyle = .fullScreen
self.present(documentPicker, animated: true, completion: nil)


extension YourViewController: UIDocumentPickerDelegate {

   func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {

    //from url you can get selected item
   }
}

Upvotes: 3

Related Questions