iOS13 UIDocumentPickerViewController-打开目录不显示选择/打开/取消按钮

时间:2019-10-04 18:12:14

标签: ios swift xcode ios13 uidocumentpickerviewcontroller

我正在使用UIDocumentPickerViewController浏览并允许用户选择目录,但是在iOS 13上,当显示此UIDocumentPickerViewController时,未显示应显示的按钮,例如select / cancel和open / done,但是在您点击位置的行为就像按钮可见时的行为一样。同样,此问题仅在iOS 13上可见。使用相同的代码,按钮将在iOS 12上显示。感谢您的帮助

对于AppDelegate didFinishLaunchingWithOptions中的UIDocumentBrowserViewController实例,我确实将导航栏的颜色设置为nil。

if #available(iOS 11.0, *) {
    UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
} 


//Here is how UIDocumentPickerViewController is created and presented
let documentPickerViewController = UIDocumentPickerViewController(documentTypes:["public.folder"], in: .open)
...
...
...

self!.documentPickerViewController.delegate = self!
self!.documentPickerViewController.allowsMultipleSelection = true
self!.documentPickerViewController.modalPresentationStyle = .fullScreen     

self!.navigationController?.present(self!.documentPickerViewController, animated: true, completion:nil)

这是屏幕截图 enter image description here

编辑: 这是视图层次结构-不知道为什么在iOS 13上使用DOCExportModeViewController。在iOS 12上,它是用于相同代码的UIDocumentBrowserViewController。有什么想法可以解决吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

如果在多个地方使用了ViewController或任何其他选择器,我发现了此快速修复方法:

if #available(iOS 11.0, *) {
    UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}

如果您担心某个地方或在不同地方使用不同的颜色,可以在ViewWillAppear中设置色调颜色,然后在ViewWillDisappear方法中将其重置。

答案 1 :(得分:0)

我观察到UIDocumentPickerControllerUIViewController的子类,其中UIImagepickerControllerUINavigationController的子类。

如果您尝试为UIImagePickerController设置tintColor中的navBar,则可以像imagePicker.navigationBar.tintColor = .red一样直接访问它,来到文档选择器,您将无法访问navigationBar直接。您可以通过imagePicker.navigationController?.navigationBar.tintColor = .red访问它。 navigationController is Optional。因此,我们无法直接访问导航栏并进行更改。

  

Apple使用文档选择器创建了一个应用程序。请在此处参考源代码:Particles