16

Posiadam VC "A", które prezentują VC "B" modalnie. B przedstawia protokół UIDocumentMenuViewController UIDocumentMenuDelegate jest realizowany w B.UIDocumentMenuViewController odrzuca prezentowanie kontrolera widoku

Jak tylko documentMenuWasCancelled(_ documentMenu:) lub documentMenu(_:didPickDocumentPicker:) pobiera nazywany dismiss(animated:completion:) B pobiera nazywane i nie mam pojęcia dlaczego.

Oto mój kod

func presentDocumentPicker() { 
    let documentTypes = [ 
     kUTTypeCompositeContent as String, 
     kUTTypePDF as String, 
     "com.microsoft.word.doc", 
     "vnd.openxmlformats-officedocument.wordprocessingml.document" 
    ] 
    let documentMenuViewController = UIDocumentMenuViewController(documentTypes: documentTypes, in: .import) 
    documentMenuViewController.delegate = self 
    present(documentMenuViewController, animated: true, completion: nil) 
} 

// MARK: - Document Menu View Controller Delegate 

func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) { 
    print("did pick") 
} 

func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { 
    print("was cancelled") 
} 

Jak widać ja nic realizowanej funkcji delegata zrobić. A jednak B zostaje zwolniony. Nie rozumiem tego.

+0

Czy możesz wysłać więcej projektu do lub przynajmniej pełnych kontrolerów ViewController, które tam masz? –

+0

W tej chwili nie mogę tego odtworzyć: D – lukwuerz

+0

może być problem z prezentacją obu kontrolerów. –

Odpowiedz

0

Jest to spowodowane metodą documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL), która jest wywoływana po kliknięciu akcji lub po anulowaniu UIDocumentMenuViewController.

napisałem rozwiązanie tutaj: https://stackoverflow.com/a/45505488/6381503

nadzieję, że pomoże.

Powiązane problemy