如何在 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 的标题中向 UISearchBar 添加按钮?
如何在 UISplitViewController 的导航栏下方添加搜索栏?