重新加载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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...