如何从视图控制器中删除导航栏

时间:2019-10-06 21:37:27

标签: ios swift

SearchViewController viewDidLoad具有以下功能

override func viewDidLoad() {
    super.viewDidLoad()

    self.cache = NSCache()

    let path = "books";
    self.ref = Database.database().reference().child(path);


    tableViewBooks.dataSource = self
    tableViewBooks.delegate = self
    tableViewBooks.register(BookDetailTableViewCell.self, forCellReuseIdentifier: "book")

    // Uncomment the following line to preserve selection between presentations
    self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.searchBar.placeholder = "Search"
    searchController.searchBar.searchBarStyle = UISearchBar.Style.prominent
    searchController.searchBar.isTranslucent = false

    let searchBarView = UIView(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(UIScreen.main.bounds.size.width), height: CGFloat(45)))

    let view = UIView();
    view.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width , height: 54)
    let searchBar = searchController.searchBar
    searchBar.backgroundColor = UIColor.white
    searchBar.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width , height: 44)
    searchBar.searchBarStyle = UISearchBar.Style.prominent
    searchBar.placeholder = " Search book title..."
    searchBar.sizeToFit()
    view.backgroundColor = UIColor.white
    searchBar.isTranslucent = false
    searchBarView.addSubview(searchBar)
    view.addSubview(searchBarView)
    tableView.tableHeaderView = view
    definesPresentationContext = true

    tableView.separatorStyle = .none
}

当某人在该视图控制器中单击表视图中的一行时,他们将被发送到DetailController

        tableRowData = filteredBooks[indexPath.row]
        self.performSegue(withIdentifier: "toDetail", sender: nil)

DetailControler的导航栏似乎无法删除。我试图将以下代码添加到viewWillAppear,但没有区别。我该怎么办?

   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.setNavigationBarHidden(true, animated: false)
        self.navigationController?.setNavigationBarHidden(true, animated: true)
        self.navigationController?.navigationBar.isHidden = true
        self.navigationController?.isNavigationBarHidden = true
        refresh()
    }

1 个答案:

答案 0 :(得分:1)

我尝试了您的代码,发现如果将hidesNavigationBarDuringPresentation设置为false,DetailController的navigationBar将被正确隐藏。这是我的代码

searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search"
searchController.searchBar.searchBarStyle = UISearchBar.Style.prominent
searchController.searchBar.isTranslucent = false
searchController.hidesNavigationBarDuringPresentation = false