使用 UISearchController 修复 UISearchBar - 不使用 UITableView 的标题视图
Posted
技术标签:
【中文标题】使用 UISearchController 修复 UISearchBar - 不使用 UITableView 的标题视图【英文标题】:Fixed UISearchBar using UISearchController - Not using header view of UITableView 【发布时间】:2015-03-22 08:58:03 【问题描述】:是否可以将 UISearchController 的 UISearchBar 放在 UITableView 的 header view 以外的地方?
在apple's sample code for UISearchController 中,使用了以下内容。
[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;
是否可以将 searchBar 放置在其他位置? 假设我们想要实现一个固定的 UISearchBar,就像在联系人应用程序中使用的那样。 我已经尝试过了,但 searchBar 根本没有出现。
【问题讨论】:
【参考方案1】:您可以将 UISearchController 的 UISearchBar 放在导航栏中,使其保持固定
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
// Include the search bar within the navigation bar.
self.navigationItem.titleView = self.searchController.searchBar;
self.definesPresentationContext = YES;
【讨论】:
在阅读您的答案之前,我正要再次撕掉SearchController
以获得手动管理的UISearchBar
,感谢您为我节省了大量时间!【参考方案2】:
创建一个 uiview 并在此视图中添加 searchController.searchbar。 之后在你的 viewController.view 中添加这个视图。在表格视图上方。
那么它就不会滚动了。
var viewTemp = UIView(frame: CGRectMake(0.0, 64.0,320.0, 44))
viewTemp.addSubview(self.searchController.searchBar)
self.view.addSubview(viewTemp);
【讨论】:
当您不想让 UISearchBar 成为 UITableView 的标题视图时,这似乎是解决方案。谢谢! @AndrewR 在这种情况下。只需执行 tableView.tableHeaderView = searchController.searchBar 这行得通,只是它搞乱了部分索引滚动:( 临时视图的意义何在?为什么不直接添加 UISearchBar?【参考方案3】:而不是直接将 UISearchBar 保留在 UITableView 之上。 将 UISearchBar 放在视图中。
【讨论】:
以上是关于使用 UISearchController 修复 UISearchBar - 不使用 UITableView 的标题视图的主要内容,如果未能解决你的问题,请参考以下文章
聚焦时如何修复 UISearchController 搜索栏调整大小?