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

时间:2011-09-30 20:29:08

标签: iphone ios cocoa-touch uitableview uisearchbar

我有一个表格视图,顶部有一个搜索栏。我的要求是当有人打开页面时不显示搜索栏,但当有人向下滑动表格时,搜索栏应该是可见的。

2 个答案:

答案 0 :(得分:23)

在控制器的viewDidAppear:方法中,设置表视图的contentOffset属性(在UIScrollView中)以隐藏搜索栏。

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];    
    self.tableView.contentOffset = CGPointMake(0, SEARCH_BAR_HEIGHT);
}

答案 1 :(得分:4)

murat's answer相关,这里有一个更加便携和正确的版本,可以消除视图加载时的动画偏移(假设搜索栏有一个名为searchBar的出口属性):< / p>

- (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;
}