로 전파 해제를 방지하는 것입니다.
1)보기 컨트롤러가 UIDocumentPickerViewController
을 선물 한 내용의 내부에 약한 참조 번호 UIDocumentPickerViewController
을 저장하십시오. (이것은 일반적으로 UINavigationController
그래서 당신은 아마이 문제를 해결하기 위해 UINavigationController
를 서브 클래스해야합니다 끝나게.)
///Due to a bug in UIDocumentPickerViewController we need to stop the UIDocumentPickerViewController from dismissing this navigation controller. Or at least provide control. This is a weak reference to a UIDocumentPickerController that this controller presents
weak var documentPicker: UIDocumentPickerViewController?
2) 이제 UIDocumentPickerViewController
//MARK: Overrides
override public func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) {
if self.presentedViewController == nil && self.documentPicker != nil {
self.documentPicker = nil
}else{
super.dismiss(animated: flag, completion: completion)
}
}
public override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
if viewControllerToPresent is UIDocumentPickerViewController {
self.documentPicker = viewControllerToPresent as? UIDocumentPickerViewController
}
super.present(viewControllerToPresent, animated: flag, completion: completion)
}
을 제시하는 UIViewController
이러한 두 가지 기능을 오버라이드 (override) UIDocumentPickerViewController
의 두 번째 전화는 제시된 UIViewController
을 닫지 않습니다.