Стилизация панели навигации в 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 ценности?

Я загрузил демонстрационный проект здесь.

0 ответов

Другие вопросы по тегам