Отображение панели поиска только тогда, когда пользователь опускает таблицу - PullRequest
12 голосов
/ 01 октября 2011

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

Ответы [ 2 ]

23 голосов
/ 01 октября 2011

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

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];    
    self.tableView.contentOffset = CGPointMake(0, SEARCH_BAR_HEIGHT);
}
4 голосов
/ 06 июня 2014

Относительно ответа Мурата , вот более переносимая и правильная версия, которая устранит анимированное смещение при загрузке просмотра (предполагается, что строка поиска имеет свойство выхода, называемое 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;
}
...