使用UISearchController固定UISearchBar - 不使用UITableView的表头视图

14

是否可以将UISearchController的UISearchBar放在UITableView的页眉视图以外的其他位置?

苹果的UISearchController示例代码中,使用了以下内容。

[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar; 

可以将搜索栏放在其他位置吗? 比如我们想要实现一个固定的UISearchBar,就像联系人应用程序中使用的那样。 我已经尝试过这样做,但是搜索栏根本不会显示。

3个回答

19

您可以将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,感谢你节省了我大量的时间! - JoniVR

9
创建一个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
@AndrewR 在这种情况下,只需执行tableView.tableHeaderView = searchController.searchBar。 - Michael McKenna
这个代码可以运行,但是它会破坏部分索引滚动 :( - MobileMon
临时视图的意义是什么?为什么不直接添加UISearchBar呢? - Mark A. Donohoe

0

不要直接将UISearchBar放在UITableView的顶部,而是将UISearchBar放在一个视图中。enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接