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

问题描述 投票:3回答:2

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

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

P.S - 使用模拟器

ios11 swift4
2个回答
4
投票

用这个 :

let search = UISearchController(searchResultsController: nil)

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

self.navigationItem.searchController = search

3
投票

您应该在删除搜索控制器后布局子视图。诀窍是你必须布局superview的子视图:因为navigationItem是导航堆栈的一部分,所以你应该将layoutSubviews()调用到当前的navigationController

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

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

© www.soinside.com 2019 - 2024. All rights reserved.