当我通过设置'nil'从navigationItem中删除searchController时。空的空间留在过去的地方,而不是倒塌。
尝试调用searchController.dismiss,navigationController.navigationItem.searchController.dismiss,navigationItem.searchController.dismiss,searchController.isActive = false。没有任何效果。
P.S - 使用模拟器
用这个 :
let search = UISearchController(searchResultsController: nil)
如果您要设置以下内容,请删除此行
self.navigationItem.searchController = search
您应该在删除搜索控制器后布局子视图。诀窍是你必须布局superview的子视图:因为navigationItem
是导航堆栈的一部分,所以你应该将layoutSubviews()
调用到当前的navigationController
:
navigationItem.searchController = nil
navigationController?.view.setNeedsLayout()
navigationController?.view.layoutIfNeeded()
根据Apple文档,您不应直接致电layoutSubviews()
。