在搜索控制器处于活动状态时选择 table 行时应用崩溃

App crashing when selecting table row while search controller Active

当我的搜索控制器处于活动状态时,每当我 select 一行 table 时,我的应用程序似乎就会崩溃。

注意事项:

这是我的一些代码:

class ViewProfileViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UISearchBarDelegate, UISearchResultsUpdating {

let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
    super.viewDidLoad()

    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.sizeToFit()
    searchController.searchBar.searchBarStyle = .minimal
    searchController.searchBar.placeholder = "Search City"
    searchController.searchBar.showsCancelButton = true
    searchController.searchBar.delegate = self
    searchController.searchBar.backgroundColor = UIColor.white

    self.myTable.tableHeaderView = searchController.searchBar

}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
    if searchController.isActive {
        navigationController?.popViewController(animated: true)
        dismiss(animated: true, completion: nil)
    } else {

    }
    let mViewController = MController()
    let navController = UINavigationController(rootViewController: mViewController)
    present(navController,animated: true, completion: nil)
}

}

不要在选择单元格时弹出视图控制器。也无需检查 searchController 是否处于活动状态。

示例:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    // Get rid of searchController
    searchController.searchBar.endEditing(true)
    searchController.isActive = false
    searchController.dismiss(animated: true) { /* */ }

    // Deselect row
    tableView.deselectRow(at: indexPath, animated: true)

    // Present your VC here

}