UINavigationBar 在解除 UISearchController 时覆盖 UITableView
Posted
技术标签:
【中文标题】UINavigationBar 在解除 UISearchController 时覆盖 UITableView【英文标题】:UINavigationBar covers UITableView when dismissing UISearchController 【发布时间】:2016-08-29 23:36:17 【问题描述】:我有一个带有搜索按钮的 UINavigationBar。搜索按钮触发一个 UISearchController:
self.navigationItem.titleView = self.searchController.searchBar
self.searchController.searchBar.becomeFirstResponder()
当用户选择搜索结果时,会推送一个新的 ViewController。如果用户随后点击返回,则会向他们展示旧的 ViewController 以及仍处于活动状态的搜索结果。
如果他们随后点击取消关闭 UISearchController,UINavigationBar 现在会覆盖视图中的内容。我想这可能是我在 viewDidLoad
和 false
中将 self.definesPresentationContext
设置为 true
时出现下一个 viewController 的原因
【问题讨论】:
【参考方案1】:如果您认为您知道问题的原因,您是否尝试过注释掉这些行?那它还做吗?
在我看来,这更像是与 UIViewController 的 automaticallyAdjustsScrollViewInsets
属性有关。
尝试在您的 UIViewController 上将其设置为 false
。
编辑:
您是否尝试过更改 UIViewController 的 edgesForExtendedLayout
属性?
self.edgesForExtendedLayout = UIRectEdgeNone;
【讨论】:
注释掉 self.definesPresentationContext 只会破坏 searchController 的呈现,这意味着我无法复制它。将automaticallyAdjustsScrollViewInsets
设置为 false 也不会改变结果 - 但我怀疑这与 UIViewController 在 searchController 处于活动状态时计算插图有关,即使 UINavigationBar 始终存在。以上是关于UINavigationBar 在解除 UISearchController 时覆盖 UITableView的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationBar titleview 图像未与 UINavigationBar 对齐