仅当用户拉下表格时才显示搜索栏

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;

【讨论】:

以上是关于仅当用户拉下表格时才显示搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

仅当有数据时才呈现表

php foreach 循环中的 HTML 表格,其中仅当元素等于表格列标题名称时才会填充单元格数据

独立的搜索栏和表格视图控制器

当用户键入输入栏时通过表格过滤

移动表格视图位置和隐藏视图

如何设置表格视图高度。当搜索栏出现和消失时