当pushViewController()时,UISearchController(searchResultsController:)视图会跳转

时间:2019-06-09 21:43:12

标签: ios swift

我的searchResultsController是一个UICollectionViewController,当我单击一个单元格并将其推入didSelectItem中的视图控制器时,在幻灯片动画期间,我的searchResultsController中的视图会跳转。但是,当我单击“后退”按钮时,视图很好,并且不会发生跳跃。

最近2天内,我一直在尝试解决此问题,似乎没有什么可以阻止这种情况的发生。我确定下面的代码都是标准的,没有什么特别的。我想念什么吗?

下面是我的代码:

SearchController -在UITabBarController中,它是UINavigationController()

class SearchController: UITableViewController {

fileprivate var searchController: UISearchController!
fileprivate let searchResultsController = SearchResultsController()

fileprivate func setSearchController() {
    definesPresentationContext = true
    searchController = UISearchController(searchResultsController: searchResultsController)
    searchController.searchBar.delegate = self
    searchController.searchBar.placeholder = "Search organisers and classes"
    searchController.searchBar.isTranslucent = false
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
  }

extension SearchController: UISearchBarDelegate {
  func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    guard let text = searchBar.text else { return }

    searchController.searchBar.text = term
    searchController.isActive = true
    searchController.searchBar.resignFirstResponder()
    searchResultsController.search(term: text)
  }
}
}

SearchResultsController

class SearchResultsController: UICollectionViewController, UICollectionViewDelegateFlowLayout {

func search(term: String) {
    print(term)
}

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    presentingViewController?.navigationController?.pushViewController(DetailsController(), animated: true) 
}
}

0 个答案:

没有答案