我正在使用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)
编辑: 这是视图层次结构-不知道为什么在iOS 13上使用DOCExportModeViewController。在iOS 12上,它是用于相同代码的UIDocumentBrowserViewController。有什么想法可以解决吗?
答案 0 :(得分:1)
如果在多个地方使用了ViewController或任何其他选择器,我发现了此快速修复方法:
if #available(iOS 11.0, *) {
UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}
如果您担心某个地方或在不同地方使用不同的颜色,可以在ViewWillAppear
中设置色调颜色,然后在ViewWillDisappear
方法中将其重置。
答案 1 :(得分:0)
我观察到UIDocumentPickerController
是UIViewController
的子类,其中UIImagepickerController
是UINavigationController
的子类。
如果您尝试为UIImagePickerController设置tintColor
中的navBar
,则可以像imagePicker.navigationBar.tintColor = .red
一样直接访问它,来到文档选择器,您将无法访问navigationBar
直接。您可以通过imagePicker.navigationController?.navigationBar.tintColor = .red
访问它。 navigationController is Optional
。因此,我们无法直接访问导航栏并进行更改。
Apple使用文档选择器创建了一个应用程序。请在此处参考源代码:Particles