2016-07-26 6 views

Antwort

2

Erste iCloud Dokumente Capabilitie aktivieren, siehe Apple-Dokumentation here

Die Sie UIDocumentMenuViewController

let importMenu = UIDocumentMenuViewController(documentTypes: doctypes, inMode: .Import) 
importMenu.delegate = self 
importMenu.popoverPresentationController?.barButtonItem = self.addButon; 
self.presentViewController(importMenu, animated: true, completion: nil) 
+0

Was mache ich mit der temporären URL, die ich ursprünglich vom DocumentPicker bekomme? Ich habe bemerkt, dass mein pdfView diese temporäre URL leicht anzeigt, aber es bleibt höchstens für ein paar Minuten gültig. Mit anderen Worten, wann sollte ich die .lastcomponent aus dieser temporären URL nehmen und dauerhaft machen, indem ich sie zum Document-Pfad hinzufüge? Ich hoffe, diese Fragen ergeben Sinn. – user3140521

15

Ihres Projekts capabilites verwenden. Aktivieren Sie zuerst die iCloud-Dienste und den Schlüssel Sharing, importieren Sie jetzt MobileCoreServices in Ihre Klasse und erweitern Sie schließlich die folgenden drei Klassen innerhalb Ihrer Klasse.

UIDocumentMenuDelegate,UIDocumentPickerDelegate,UINavigationControllerDelegate 

Nun werden Sie die richtigen Implementierungen für Ihre erweiterten neuen Klassen zu machen beauftragt. Die Funktionen, die Sie benötigen, sind

@available(iOS 8.0, *) 
public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) { 


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


//optional, case PDF -> render 
//displayPDFweb.loadRequest(NSURLRequest(url: cico) as URLRequest) 




} 

@available(iOS 8.0, *) 
public func documentMenu(_ documentMenu:  UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) { 

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

} 



func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { 

    print("we cancelled") 

     dismiss(animated: true, completion: nil) 


} 

Wie nennen Sie das alles? Fügen Sie einer Ihrer anklickbaren Funktionen den folgenden Code hinzu.

func mySpecialFunction(){ 

let importMenu = UIDocumentMenuViewController(documentTypes: [String(kUTTypePDF)], in: .import) 
      importMenu.delegate = self 
      importMenu.modalPresentationStyle = .formSheet  
      self.present(importMenu, animated: true, completion: nil) 
} 

Manipulieren Sie die documentTypes nach Ihren Bedürfnissen. In meiner App dürfen Nutzer nur Pdf. Also, passen Sie sich an.

kUTTypePDF

Nun, wenn Sie Ihre Schaltfläche klicken. Das folgende Menü wird

MenuPicker

Im Fall von DropBox Pop-up. Nach dem Klicken auf einen Gegenstand. Sie werden zu Ihrer App weitergeleitet. Und die URL wird gedruckt.

enter image description here

Auch wenn Sie sich wie Sie Ihre eigene Menüleiste anpassen. Fügen Sie den folgenden Code und passen Sie Ihre eigene Funktion innerhalb des Handlers

 importMenu.addOption(withTitle: "Create New Document", image: nil, order: .first, handler: { print("New Doc Requested") }) 

enter image description here

es genießen.

+1

kann nicht auf "public.audio" gesetzt werden zeigt diesen Fehler "zeigt diesen Fehler" übergeben in Typ public.pdf entspricht weder public.content noch public.item. Wenn Sie einen neuen Typ exportieren, stellen Sie bitte sicher, dass er einem entsprechenden übergeordneten Typ entspricht. " –

+1

danke, das hat mir geholfen –

+1

Während ich den UIDocumentMenuViewController initialisiere, wird meine App abgestürzt @Alexander –

Verwandte Themen