iOS11 SearchController - 从navigationItem中删除SearchBar会留下破坏的UI

时间:2017-10-02 20:04:05

标签: ios11 swift4

当我通过设置'nil'从navigationItem中删除searchController时。空的空间留在过去的地方而不是折叠。

尝试调用searchController.dismiss,navigationController.navigationItem.searchController.dismiss,navigationItem.searchController.dismiss,searchController.isActive = false。没有任何效果。

P.S - 使用模拟器

2 个答案:

答案 0 :(得分:4)

使用此:

let search = UISearchController(searchResultsController: nil)

如果您设置以下内容,请删除此行

self.navigationItem.searchController = search

答案 1 :(得分:2)

删除搜索控制器后,应布局子视图。诀窍是您必须布局哪个超级视图的子视图:由于navigationItem是导航堆栈的一部分,因此您应该在当前layoutSubviews()上调用navigationController:< / p>

navigationItem.searchController = nil
navigationController?.view.setNeedsLayout()
navigationController?.view.layoutIfNeeded()

根据Apple文档,您不应直接致电layoutSubviews()