Прежде всего, извините, если это дубликат Скрыть панель навигации после использования панели поиска
Вышеуказанный вопрос был для Objective- C, не имеет рабочего решения и был неактивен в течение нескольких лет, поэтому я подумал, что проблема требует нового вопроса.
Проблема, с которой я сталкиваюсь, заключается в том, что панель навигации в контроллере подробного представления скрыта, только если контроллер поиска не был активен в момент представления , Если я представлю Деталь V C из отфильтрованной таблицы, я получу полупрозрачную панель навигации вверху представления.
class PlaylistViewController: UIViewController {
var playlists: [Playlist] = [standardPlaylist]
var filteredPlaylists: [Playlist] = []
let searchController = UISearchController(searchResultsController: nil)
var isSearchBarEmpty: Bool {
searchController.searchBar.text?.isEmpty ?? true
}
var isFiltering: Bool {
return searchController.isActive && !isSearchBarEmpty
}
@IBOutlet weak var PlaylistTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.setNavigationBarHidden(false, animated: true)
self.navigationController?.navigationBar.prefersLargeTitles = true
PlaylistTableView.delegate = self
PlaylistTableView.dataSource = self
//search bar setup
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search Playlists"
searchController.searchBar.sizeToFit()
navigationItem.searchController = searchController
definesPresentationContext = true
//When table view row is selected
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//instantiate a DetailVC
//other logic
DispatchQueue.main.async {
self.navigationController?.setViewControllers([detailVC], animated: true)
//I have tried hiding the Nav Bar here but the problem persists
}
}
}
extension PlaylistViewController: UISearchResultsUpdating {
func updateSearchResults(for searchController: UISearchController) {
let searchBar = searchController.searchBar
filterPlaylists(searchBar.text!)
}
}
class DetailVC: UIViewController {
override func viewWillAppear(_ animated: Bool) {
navigationController?.setNavigationBarHidden(true, animated: false)
}