表视图隐藏搜索栏直到滚动

时间:2014-07-02 13:35:49

标签: ios objective-c xcode uitableview uisearchbar

我有一个表格视图设置,还有一个工作搜索栏 - 没有XIB或STORYBOARD参与。在搜索栏上方,我有标签显示表格视图中的条目数量以及其他一些内容。那么现在我希望搜索栏+标签隐藏,直到用户向上滚动(如在音乐应用程序中)。这是我的搜索栏的设置

self.searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
self.searchBar.showsCancelButton = YES;
[self.view addSubview:self.searchBar];
self.searchBar.delegate = self;
self.tableView.contentInset = UIEdgeInsetsMake(self.searchBar.frame.size.height,0, 0, 0);
[self.tableView setTableHeaderView:self.searchBar];
[self.tableView setContentOffset:CGPointMake(0,88) animated:YES];
[self.zsearchDisplayController setActive:NO animated:YES];

这是我的标签:

 tableCountDisplay = [[UILabel alloc]initWithFrame:CGRectMake(5, -44, 155, 44)];

标签已隐藏,直到用户滚动。问题是 - 我无法隐藏搜索栏。如果我做

 [self.tableView setContentOffset:CGPointMake(0,88) animated:YES];

然后隐藏搜索栏和标签,但也是我的表格视图的第一个元素......

如果我做44或0(并不重要)

[self.tableView setContentOffset:CGPointMake(0,44 or 0) animated:YES];

标签被隐藏,其他一切都可见。技术上,0,44应该是正确的偏移量,但由于某种原因它不起作用。 我真的很高兴得到一些帮助!

3 个答案:

答案 0 :(得分:8)

其中一个解决方案是将您的searchBarlabel作为子视图添加到UIView。然后将此UIView设置为TableHeaderView。我的工作样本如下:

workingSample

滚动前的屏幕:

beforescroll

滚动后的屏幕:

afterscroll

答案 1 :(得分:0)

没有办法维护tableView固定的标头

1-可以使用UIViewController而不是UITableViewController。

2-为标题添加子视图(UIView)(在此视图中添加searchBarView)。

3-并为tableview添加另一个子视图。

答案 2 :(得分:0)

怎么样?
tableView.contentOffset = CGPoint(x: 0, y: (tableView.tableHeaderView?.frame.size.height ?? 0))

on wiewWillAppear:;)