iPhone UITableView с UISearchBar и обновляющий указатель разделов - PullRequest
6 голосов
/ 08 мая 2009

У меня есть UITableView с UISearchBar вверху.

Я также использую делегата Index Section для отображения ABC ... XYZ с правой стороны.

Проблема возникает, когда я нажимаю на поле поиска и клавиатура поднимается снизу, указатель раздела сжимается, поэтому отображаются только A D ... * Z - когда я закрываю поиск и они клавиатура исчезает, указатель остается в этом «сжатом» состоянии до тех пор, пока я не прокручиваю или что-то подобное.

    // animate the searchbar
[UIView beginAnimations:nil context:NULL];
CGRect tempRect = [[self searchBar] frame];
tempRect.size.width = 320-kMarginRight;
[[self searchBar] setFrame:tempRect];
[UIView commitAnimations];  

    // animate the search index back into view
for (UIView *view in [[self tableView] subviews]) {
    if ([view respondsToSelector:@selector(moveIndexIn)]) {
        MovableTableViewIndex *index = (MovableTableViewIndex*)view;
        [index moveIndexIn];
    }
}   

    // try a whole load of stuff to try and get the section indexes to draw again properly
    // none of which work!  

[searchBar setText:@""];
[searchBar resignFirstResponder];

letUserSelectRow = YES;
searching = NO;
[[self navigationItem] setRightBarButtonItem:nil];
[[self tableView] setScrollEnabled:YES];        
[[self tableView] reloadData];
[[self tableView] flashScrollIndicators];
[[self tableView] sizeToFit];
[[self tableView] zoomScale];       
[[self tableView] reloadSectionIndexTitles];

Мои вопросы: кто-нибудь видел такое поведение? Есть ли способ перерисовать индекс раздела на RHS ([[self tableView] reloadData] не сработает)

Спасибо миллион!

Ответы [ 3 ]

4 голосов
/ 03 октября 2009

Вы должны отключить рисование индексов, когда поиск вообще активирован. Просто верните nil в вашем делегате, что-то вроде этого:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
  if ([self.searchDisplayController isActive]) return nil;

  ...
}
2 голосов
/ 12 мая 2009

Вы можете попробовать использовать

- (void)flashScrollIndicators

которая обновляет полосу прокрутки и, надеюсь, индекс раздела тоже?

0 голосов
/ 05 мая 2010

Работает нормально !!!

[searchBar setContentInset:UIEdgeInsetsMake(5, 0, 5, 35)];

...