2017-02-23 1 views
-1

Ich habe versucht, einen documentPicker zu setzen, um eine Datei von iCloud zu bekommen, aber meine App öffnet das documentMenu, um eine Datei (iCloud, Dropbox) zu importieren und wenn ich iCloud wähle Dokumentenauswahl mit meinen Dateien. Wenn ich die Datei auf documentPicker zu delegieren haben (_ ...) [documentPicker.delegate = self.delegate] Funktion wird aufgerufen, nie, weil meine Klasse zu Protokoll entspricht nichtDocumentPickerDelegate funktioniert nicht nach update to swift 3

import UIKit 

class ImportKeyViewController: UIViewController{ 
    @IBOutlet weak var openWithLabel: UILabel! 
    @IBOutlet weak var transparentBackgroundView: UIView! 
    @IBOutlet weak var iCloudButton: UIButton! 
    @IBOutlet weak var iTunesButton: UIButton! 

    weak var delegate : UIDocumentPickerDelegate? 

    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL){ 
     print("Entre a documentPicker") 
    } 

    func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { 
     print("Sali a documentPicker") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     print("llegue") 
     setUpUI() 
    } 

    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 

     UIView.animate(withDuration: 0.1, animations: { 
      self.transparentBackgroundView.backgroundColor = UIColor(red: 220/255, green: 220/255, blue: 220/255, alpha: 0.7) 
     }) 
    } 

    override func viewWillDisappear(_ animated: Bool) { 
     UIView.animate(withDuration: 0.1, animations: { 
      self.transparentBackgroundView.backgroundColor = UIColor.clear 
     }) 
    } 

    @IBAction func closeButtonAction(_ sender: UIButton) { 

     let documentPicker = UIDocumentPickerViewController (documentTypes: ["public.text","public.content"], in: .import) 
     documentPicker.delegate? = self.delegate! 
     self.present(documentPicker, animated:true, completion: nil) 

    } 
} 

habe ich den obligatorischen und optionale Methoden für UIDocumentPickerDelegate, aber es funktioniert nicht, wie Sie in Bild unten sehen können

Dies ist meine erste iOS App, hoffe, Sie können mir helfen.

+0

es nichts "wie Sie in Bild unten sehen können". – Gruntcakes

+0

Bitte bearbeiten Sie Ihre Frage, indem Sie den entsprechenden Code kopieren und einfügen und eine klare Beschreibung, welche Teile funktionieren und welche Teile nicht. – rmaddy

+0

Danke. Mein Fehler. Bild aktualisiert –

Antwort

0

Sie sollten die neue Syntax der didPickDocumentAt: Delegate-Methode hinzufügen, sieht aus wie es ein bisschen geändert hat.

- bearbeiten

Ihre ImportKeyViewController sollte die UIDocumentPickerDelegate erben. Ein guter Weg, dies zu tun, ist, eine Erweiterung zu erstellen. Auf diese Weise ist leicht erkennbar, welche Methoden Delegatmethoden sind und welche Methoden Sie verwenden.

Wie so:

extension ImportKeyViewController: UIDocumentPickerDelegate { 

    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL){ 
     print("Entre a documentPicker") 
    } 

    func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { 
     print("Sali a documentPicker") 
    } 

} 
+0

Dieser? func documentPicker (_controller: UIDocumentPickerViewController, didPickDocumentAt URL: URL) {...} –

+0

In dem Bild, das Sie gepostet, aber jetzt entfernt, konnten Sie die Compilerfehler bemerken. Über Ihren Viewcontroller, der dem Delegierten nicht bestätigt. Sie können die Delegate-Methoden auschecken, indem Sie den Befehl drücken und auf UIDocumentPickerDelegate klicken. –

+0

Ah, jetzt sehe ich, was du falsch machst, lass mich meine Antwort bearbeiten. –

Verwandte Themen