У меня есть таблица с панелью поиска. Использование панели поиска, кажется, хорошо, пока один не прокручивается к нижней части результатов. Я сделаю все возможное, чтобы объяснить.
Скажем, у меня есть таблица данных из 1000 объектов, и я набираю 'w' в строке поиска. 25 объектов, которые начинаются с буквы «W» отображаются. Я кликаю в таблицу и могу прокручивать вверх и вниз эти 25 объектов. Тем не менее, как только я добираюсь до дна и пытаюсь прокрутить последний объект, панель поиска, которая была статичной в верхней части, начинает прокручиваться вверх и исчезать, открывая «дублирующуюся» таблицу из этих 25 «w» объектов. ,
Я могу поместить 1-ую таблицу в верхнюю половину моего экрана и 2-ую таблицу в нижней половине и прокрутить их вверх и вниз по отдельности. Это действительно странно. Я понятия не имею, какой код должен мне пригодиться, но я буду рад опубликовать любой, если у кого-то есть идея.
Это явление не возникает при прокрутке до нижней части таблицы без возможности поиска.
Вот последовательность изображений в попытке прояснить проблему. фото
Обратный вызов в строке поиска:
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {
[searchResult removeAllObjects];
if ([searchText length] > 0) {
isSearchOn = YES;
canSelectRow = YES;
self.tableView.scrollEnabled = YES;
[self searchTableView];
}
else {
isSearchOn = NO;
canSelectRow = YES;
self.tableView.scrollEnabled = NO;
}
[self.tableView reloadData];
}
- (void) searchTableView {
NSString *sTemp = nil;
NSArray *tempSectionArray = nil;
NSArray *tempEnglishArray = nil;
NSString *firstLetter = [searchBar.text substringToIndex:1];
//--- Only including W
if ([firstLetter isEqualToString:@"W"] ||
[firstLetter isEqualToString:@"w"]) {
tempSectionArray = [NSArray arrayWithArray:[self.listSortByIndex objectAtIndex:23]];
tempEnglishArray = [NSArray arrayWithArray:[self.listEnglish objectAtIndex:23]];
}
for (int i = 0; i < [tempEnglishArray count]; i++) {
sTemp = [tempEnglishArray objectAtIndex:i];
NSRange titleResultsRange = [sTemp rangeOfString:searchBar.text options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[searchResult addObject:[tempSectionArray objectAtIndex:i]];
}
}