Как добавить кнопку назад или отменить, чтобы закрыть UIDocumentBrowser
3 ответа
UIDocumentBrowserViewController предназначен для использования только в качестве корневого контроллера представления, поэтому у него нет кнопки "Назад" или "Отмена". Согласно документации:
Важный
Всегда назначайте браузер документов в качестве корневого контроллера вашего приложения. Не размещайте браузер документов в контроллере навигации, панели вкладок или в режиме разделенного просмотра и не отображайте браузер документов модально.
Если вы хотите представить браузер документов из другого места в иерархии представлений, используйте
UIDocumentPickerViewController
вместо.
Используйте CustomDocumentPickerViewController с черным внешним видом для UINavigationBar и UIBarButtonItem. Используйте приведенный ниже код
import UIKit
class CustomDocumentPickerViewController: UIDocumentPickerViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UINavigationBar.appearance().tintColor = UIColor.black
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.black], for: .normal)
}
override func viewWillDisappear(_ animated: Bool) {
UINavigationBar.appearance().tintColor = UIColor.white // your color
UIBarButtonItem.appearance().setTitleTextAttributes(nil, for: .normal)
super.viewWillDisappear(animated)
}
}
Отличным решением для этой проблемы является добавление пользовательской кнопки с помощью свойства extraTrailingNavigationBarButtonItems или extraLeadingNavigationBarButtonItems . Пример ниже:
let documentBrowser = UIDocumentBrowserViewController(forOpening: [.jpeg, .png])
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(didTapDocumentBrowserCancel))
documentBrowser.additionalTrailingNavigationBarButtonItems = [cancelButton]
Затем создайте функцию для закрытия браузера документов.
@objc private func didTapDocumentBrowserCancel() {
dismiss(animated: true)
}
Использованная литература:
- /questions/5692824/uidocumentbrowserviewcontroller-obrabatyivaet-obratnuyu-navigatsiyu/66062473#66062473
- https://developer.apple.com/documentation/uikit/uidocumentbrowserviewcontroller/2874191-additionalleadingnavigationbarbu
- https://developer.apple.com/documentation/uikit/uidocumentbrowserviewcontroller/2874180-additionaltrailingnavigationbarb