如何在 UITableView 中添加搜索栏,就像 iOS 中的游戏中心一样?

Posted

技术标签:

【中文标题】如何在 UITableView 中添加搜索栏,就像 iOS 中的游戏中心一样?【英文标题】:How to add Search Bar in UITableView Like game center in iOS? 【发布时间】:2015-03-02 14:09:27 【问题描述】:

我已将搜索栏添加到 UITableView(tblViewGallery)。我添加了 UITableView(tblViewGallery) 的 searchBar tableHeader。因此添加的搜索栏工作正常 UITableView(tblViewGallery)。但现在我希望 searchBar 显示为“游戏中心”搜索栏。我想在首次显示 tblViewGallery 时隐藏 SearchBar,当我们向下滚动 tblViewGallery 时,将显示搜索栏,但它会像“游戏中心”搜索栏一样锁定 UINavigationBar。我应该遵循什么方法?我试过了,

[tblViewGallery scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];

使用这个,我可以在第一次显示 tblViewGallery 时隐藏 searchBar,当我向下滚动 tableView 时,搜索栏也会出现,但它没有锁定 UINavigation Bar。对于锁定,我在 UIScrollView -(void)scrollViewDidScroll:(UIScrollView *)scrollView 的委托方法中尝试了以下代码

CGRect rect = searchBar.frame;
rect.origin.y = MIN(0, scrollView.contentOffset.y);
searchBar.frame = rect;

【问题讨论】:

您遇到的具体问题是什么? “它没有锁定 UINavigationBar”是什么意思? 是的,它不会像 Game Center 那样锁定 UINavigationBar,而且当我输入任何字母或字符进行搜索时,SearchBar 也会自动隐藏。 @Stonz2,如何锁定导航栏下方的搜索栏..... 很抱歉,您必须说得更具体一些,因为我仍然不知道您要达到什么目的。 我想添加像iPhone的“游戏中心”这样的搜索栏..... 【参考方案1】:

如果我认为您尝试做的事情是正确的,您希望搜索栏在用户向下滚动时滚动到视图之外,并允许表格标题锁定到导航栏的顶部。

基于此,我首先将您的UITableView 样式设置为UITableViewStyleGrouped。然后重写viewForHeaderInSection 方法为每个组提供一个标头。标题将是一个带有一些文本的简单 UIView。

然后对于第一行而不是加载您的普通单元格,您将加载一个 UITableViewCell 子类,其中包含一个 UISearchBar。然后在您的“viewForHeaderInSection”中返回一个UIView 子类,第一组的高度为零。

这将在UITabeView 的顶部为您提供一个 UISearchBar,它不会有标题,当用户向下滚动时它会滚动出视图,而其他标题将锁定到 UINavigationBar 时滚动,因为这是默认行为。

这有帮助吗?

【讨论】:

以上是关于如何在 UITableView 中添加搜索栏,就像 iOS 中的游戏中心一样?的主要内容,如果未能解决你的问题,请参考以下文章

编辑搜索栏时将 UITableView 添加到子视图

如何在 UITableview 的标题中向 UISearchBar 添加按钮?

如何在 UISplitViewController 的导航栏下方添加搜索栏?

领域对象的 UITableView 中的搜索栏

更改 UITableView 中的搜索栏高度(swift 5)

以编程方式将搜索栏和 UISearchDisplayController 添加到 UITableView