重新加载ViewController之后,searchController不会出现在navigationItem中Swift 5

问题描述

在我的应用程序中,我使用的是放置在navigationItem中的searchController。 我这样创建一个searchController:

class FirstVC: UIViewController,UITableViewDelegate,UITableViewDataSource {
private var searchController = UISearchController()
var creator: FirstVC?
@IBOutlet var navigationBarItem: UINavigationItem!

override func viewDidLoad() {
super.viewDidLoad()
   searchController = setupSearchController()
   navigationBarItem = searchController
}

private func setupSearchController() -> UISearchController {
        let controller = UISearchController(searchResultsController: nil)
        ...
        return controller
    }

如果我的tableView为空,那么我将隐藏searchController,否则将其显示

private func hideSearchBar() {
        navigationBarItem.searchController = nil
    }

private func showSearchBar() {
        navigationBarItem.searchController = searchController
    }

private func reloadCreator(vc: FirstVC) {
        ...
      if !....isEmpty {
        showSearchBar()
      } else {
        hideSearchBar()
    }

但是,当我在此上方显示SecondVC时(为此我使用navigationController?.showDetailViewController(...) func)然后将其关闭,则searchController不会显示。但是,如果我按下VC再回来,它就会显示出来。 当我关闭SecondVC时,我尝试使用func reloadCreator在FirstVC中重新加载数据,但是searchController没有出现。

@objc private func dismissSecondVC() {
        ...
        guard let vc = creator else { return }
        reloadCreator(vc: vc)
        
        dismiss(animated: true,completion: nil)
    }

如何显示searchController?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)