在UIDocumentPickerViewController

时间:2018-03-18 07:32:37

标签: ios swift uinavigationbar uidocumentpickerviewcontroller

在我的应用中,主要主题包含带有白色条形按钮项和标题的蓝色导航栏。

enter image description here

我在App Delegate中设置了这样的颜色值。

UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().barTintColor = AppColors.blue
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]

但是在某些视图控制器中,我需要反转这些样式(带有蓝色按钮和标题的白色导航栏)。

enter image description here

因此,在那些视图控制器中,我只需在viewWillAppear方法中设置新值。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationBar.tintColor = AppColors.blue
    navigationController?.navigationBar.barTintColor = .white
    navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: AppColors.blue]
}

从其中一个视图控制器中,我必须显示UIDocumentPickerViewController来选择文档文件。

let documentPickerViewController = UIDocumentPickerViewController(documentTypes: [String(kUTTypePDF)], in: .import)
documentPickerViewController.delegate = self
present(documentPickerViewController, animated: true)

用户也可以预览它。我使用QuickLook框架来做到这一点。

问题是这些视图控制器UIDocumentPickerViewControllerQLPreviewController不符合我在viewWillAppear方法中设置的新导航栏颜色值。

enter image description here

主视图控制器具有蓝色导航栏,但详细视图的导航栏全部为白色。包括条形按钮项。因此按钮不可见。我在viewWillAppear方法中设置的值似乎没有效果。我在App Delegate中注释掉了appearance值,按钮显示为默认颜色。

enter image description here

QLPreviewController视图控制器相同。

enter image description here

enter image description here

我尝试让呈现视图控制器符合UINavigationControllerDelegate但是没有用。

我也试过像[{1}}这样引用UIDocumentPickerViewController的导航控制器,但它也会返回documentPickerViewController.navigationController

如何在不更改nil值的情况下将颜色应用于UIDocumentPickerViewController

我上传了一个演示项目here

0 个答案:

没有答案