Нажмите на индекс UITableView (AZ), когда активна панель поиска UISearchController.

У меня есть UITableView, связанный с UISearchController.

Соединение выполняется путем размещения панели поиска в качестве заголовка табличного представления следующим образом:

tableView.tableHeaderView = searchController.searchBar

Я делаю связь между индексной полосой сбоку и заголовком разделов следующим образом:

func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
    if searchPredicate != nil {
        for (index, section) in enumerate(filteredSections) {
            if section.name == title {
                return index
            }
        }
        return 0
    } else {
        return self.fetchedResultsController.sectionForSectionIndexTitle(title, atIndex: index)
    }
}

Это прекрасно работает.

Когда панель поиска активна, она остается видимой все время при прокрутке (что является предполагаемым поведением).

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

Как и на этом снимке, я нажал на индексную букву L:

введите здесь описание изображения

Есть ли способ исправить это (любой хак принят)?


person Nico    schedule 10.09.2015    source источник


Ответы (1)


Если вы хотите, чтобы UISearchBar был виден поверх UITableView, вы должны попытаться установить вставки для вашего tableView. Такие как

[self.tableView setContentInset:UIEdgeInsetsMake(44, 0, 0, 0)];
person rkyr    schedule 10.09.2015
comment
Я согласен с этим ответом. Ручная прокрутка tableView должна быть приемлемым решением. - person Josip B.; 10.09.2015
comment
Я тоже согласен. Спасибо. Просто уточнение для будущих читателей: вы должны добавить вставку, когда панель поиска активна, и сбросить ее, когда она неактивна. - person Nico; 11.09.2015
comment
На самом деле есть проблема. Когда я меняю вкладку контента, серая часть панели поиска становится немного прозрачной. Есть идеи, как это решить? - person Nico; 11.09.2015
comment
searchController.searchBar.translucent = false исправляет это. - person Nico; 11.09.2015