UITableView с правосторонним указателем, разделами и панелью поиска приводит к тому, что правосторонний указатель становится устаревшим - PullRequest
1 голос
/ 25 сентября 2011

У меня есть UITableView с разделом, поисковой панелью и правым указателем. Изначально все работает и рисуется правильно. Однако, когда я печатаю в строке поиска, а затем нажимаю «Отмена», правильный индекс перерисовывается неправильно. Вот как выглядит индекс после того, как я нажму кнопку «Отмена».

Squished Index

Здесь нормально:

Normal

[Обновление]

По какой-то причине мне пришлось использовать этот метод, чтобы заставить мою таблицу reloadData работать:

- (void) searchBarTextDidEndEditing: (UISearchBar *) searchBar {...}

вместо этого метода:

- (void) searchDisplayControllerDidEndSearch: (UISearchDisplayController *) контроллер {...}

Вот мой метод:

/* Reset Table here
 */
-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    NSLog(@"\n===searchBarTextDidEndEditing");
    self.isFiltered = NO;
    self.tableView = self.myTableView;

    [self genIndexWithFilter:NO];
    [self.tableView reloadData];

}

Если кто-то сможет объяснить тонкие детали, я проголосую и приму их ответ.

1 Ответ

0 голосов
/ 01 июня 2012

Предполагая, что ваше self.isFiltered логическое значение является переменной, которая управляет тем, какой набор данных выводится на экран; либо полный список, либо уточненный искомый набор.

Когда вызывается -(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { ...}, устанавливается флаг self.isFiltered, и вы перезагружаете таблицу через. [self.tableView reloadData]; перезагружает таблицу, проверяя, визуализируете ли вы отфильтрованные данные или нет.

Также, когда вызывается reloadData, он проверяет, сколько разделов должно быть отображено. Если все сделано правильно, вы можете получить что-то вроде этого ...

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

    if(self.isFiltered) //If searching
        return nil; //Return empty section
    else
        return sectionSelectionArray; //Return list of headers
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...