Стилизация панели навигации в UIDocumentPickerViewController
В моем приложении основная тема имеет синие панели навигации с белыми кнопками и заголовками.
Я устанавливаю значения для цветов, как это в App Delegate.
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().tintColor = .white
UINavigationBar.appearance().barTintColor = AppColors.blue
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
Но в некоторых контроллерах представления я должен инвертировать эти стили (белые панели навигации с синими кнопками и заголовками).
Поэтому в этих контроллерах я просто устанавливаю новые значения в 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 Framework для этого.
Проблема в этих контроллерах представления, UIDocumentPickerViewController
а также QLPreviewController
не соответствуют новым значениям цвета панели навигации, которые я установил в viewWillAppear
метод.
Контроллер основного вида имеет синюю панель навигации, но панель навигации детального вида полностью белая. Включая элементы панели кнопок. Так что кнопки не видны. Кажется, значения, которые я установил в viewWillAppear
метод не имеет никакого эффекта здесь. Я закомментировал appearance
значения из App Delegate и кнопок отображаются в цветах по умолчанию.
То же самое с QLPreviewController
просмотр контроллера.
Я пытался, чтобы контроллер представления представления соответствовал UINavigationControllerDelegate
но это не сработало.
Я также попытался получить ссылку на UIDocumentPickerViewController
навигационный контроллер вот так documentPickerViewController.navigationController
но возвращается nil
также.
Как я могу применить цвета к UIDocumentPickerViewController
без изменения appearance
ценности?
Я загрузил демонстрационный проект здесь.