仅当用户拉下表格时才显示搜索栏
Posted
技术标签:
【中文标题】仅当用户拉下表格时才显示搜索栏【英文标题】:Showing the searchbar only when user pull down the table 【发布时间】:2011-09-30 20:29:07 【问题描述】:我有一个表格视图,上面有一个搜索栏。我的要求是当有人打开页面时不显示搜索栏,但是当有人向下滑动表格时,搜索栏应该是可见的。
【问题讨论】:
【参考方案1】:在控制器的viewDidAppear:
方法中,设置表格视图的 contentOffset 属性(在 UIScrollView 中)以隐藏搜索栏。
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
self.tableView.contentOffset = CGPointMake(0, SEARCH_BAR_HEIGHT);
【讨论】:
使用 viewDidAppear: 可能会导致 contentOffset 更改对应用程序的用户可见。使用 viewWillAppear: 将在向用户显示任何内容之前进行更改。 您也可以在viewDidLoad
中执行此操作,最初只执行一次,并且在返回视图时仍记得您在tableView 中的位置(例如在UINavigationController
中)。【参考方案2】:
与murat's answer 相关,这是一个更便携、更正确的版本,它将消除视图加载时的动画偏移(它假设搜索栏有一个名为searchBar
的出口属性):
- (void)viewWillAppear:(BOOL)animated
self.tableView.contentOffset = CGPointMake(0, self.searchBar.frame.size.height);
更新:
为了适应在节索引中点击搜索图标,需要实现以下方法,恢复内容偏移:
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title
atIndex:(NSInteger)index
index--;
if (index < 0)
[tableView
setContentOffset:CGPointMake(0.0, -tableView.contentInset.top)];
return NSNotFound;
return index;
【讨论】:
以上是关于仅当用户拉下表格时才显示搜索栏的主要内容,如果未能解决你的问题,请参考以下文章