Отображение поисковой панели только тогда, когда пользователь вытаскивает таблицу

У меня есть табличный вид с верхней панелью поиска. Мое требование состоит в том, чтобы не показывать панель поиска, когда кто-то открывает страницу, но когда кто-то скользит по таблице, тогда панель поиска должна быть видимой.

Ответ 1

В вашем контроллере viewDidAppear: установите свойство contentOffset (в UIScrollView) вашего вида таблицы, чтобы скрыть панель поиска.

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

Ответ 2

Связанный с ответ murat, здесь более портативная и правильная версия, которая покончит с анимированным смещением при загрузке вида (предполагается, что в строке поиска есть свойство outlet, называемое searchBar):

- (void)viewWillAppear:(BOOL)animated
{
    self.tableView.contentOffset = CGPointMake(0, self.searchBar.frame.size.height);
}

UPDATE:

Чтобы выполнить поиск по значку поиска в индексе раздела, необходимо выполнить следующий метод, который восстанавливает смещение содержимого:

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