1

我正在使用 UIDocumentPickerViewController 浏览并让用户选择一个目录,但在 iOS 13 上,当显示此 UIDocumentPickerViewController 时,不显示应该显示的按钮,如选择/取消和打开/完成,但是当您点击该位置时,它会显示行为就像按钮可见时的行为。此外,此问题仅在 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。有什么想法可以解决这个问题吗?

在此处输入图像描述

4

2 回答 2

1

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

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

如果您担心一个地方或在不同地方有不同的颜色,您可以设置色调颜色并在方法中ViewWillAppear重置它。ViewWillDisappear

于 2020-04-27T07:36:23.027 回答
0

我观察到它UIDocumentPickerControllerUIViewControllerWhereUIImagepickerController的子类,是UINavigationController.

如果您尝试为 UIImagePickerController 设置,您可以直接访问它,就像tintColor来到文档选择器一样,您无法直接访问。您可以通过. 这就是为什么我们无法直接访问导航栏并进行更改的原因。navBarimagePicker.navigationBar.tintColor = .rednavigationBarimagePicker.navigationController?.navigationBar.tintColor = .rednavigationController is Optional

Apple 创建了一个带有文档选择器的应用程序。在此处参考源代码:粒子

于 2019-10-05T16:51:42.890 回答