У меня есть источник данных (productsArry), который заполняется через SQLite, и я выбираю 25 элементов одновременно.Я вызываю делегат UITableView 'willDisplayCell', и когда indexPath.row равен количеству productsArry, он получит новые данные и перезагрузит представление таблиц.Это прекрасно работает без проблем, но скажем, если источник данных имеет 100 объектов, которые отображаются в виде таблицы, а затем productsArry отфильтрован с меньшим количеством объектов (скажем, 50) и выполняет reloadData, что снова хорошо, но проблеманаходится в делегате willDisplayCell.По какой-то причине этот метод вызывается без пользовательской прокрутки.Таким образом, он думает, что ячейка 25 тоже была прокручена, и теперь он будет получать следующий набор строк из базы данных.Он будет продолжать это делать до тех пор, пока не достигнет 100 объектов из последнего набора данных или не найдет ничего другого для извлечения из фильтра.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (([self.productsArry count] != 0) && (indexPath.row == [self.productsArry count]))
{
self.currentOffset += TableviewRowCount;
[self performSelector:@selector(reloadTableView:) withObject:nil afterDelay:0.2];
}
}
- (void)reloadTableView:(id)sender
{
NSLog(@"reloadtable");
[self fetchData];
[self.productTableView reloadData];
}
Пожалуйста, дайте мне знать, если вам нужно знать что-то еще, что можетпомочь разобраться.