Другие решения, похоже, не работают.
Я использую приложение MasterView на всякий случай, если это важно.
Я хочу, чтобы в 'detailViewController' не было ни панели навигации, ни панели навигации в последующих контроллерах ViewController, для которых я использую команду 'show', чтобы добраться до нее.
Вот DetailViewController:
Class DetailViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.setToolbarHidden(true, animated: true)
configureView()
}
configureView() {
// Some UI Stuff
}
}
Панель навигации все еще там.
В MasterViewController это готовится к обсуждению:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let indexPath = tableView.indexPathForSelectedRow {
if isFiltering() == true {
let building = filteredBuildings[(tableView.indexPathForSelectedRow?.row)!]
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
controller.detailBuilding = building
controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
controller.navigationItem.leftItemsSupplementBackButton = true
rating = filteredBuildings[(tableView.indexPathForSelectedRow?.row)!].rating
print("rating was changed to \(rating)")
} else {
let building = buildings[indexPath.row]
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController
controller.detailBuilding = building
controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
controller.navigationItem.leftItemsSupplementBackButton = true
rating = buildings[indexPath.row].rating
print("rating was changed to \(rating)")
}
}
}
}