У меня есть UITableView, который использует массив для отображения данных. Это прекрасно работает. У меня также есть UISearchBar для поиска в этой таблице. Когда данные сопоставляются в массиве tableviews, эти строки добавляются в другой изменяемый массив, а cellForRowAtIndexPath: вместо этого отображает данные из этого изменяемого массива.
Но numberOfRowsInSection: никогда не вызывается, когда я вызываю reloadData. Поэтому tableview падает при прокрутке, поскольку пытается получить данные из изменяемого массива, но для строк, которые находятся в исходном массиве (у которого больше элементов)
Я отлаживал довольно долгое время, но не могу ради любви найти причины этого. Datasource и Delegate подключены в представлении таблицы, поскольку он может отображать данные из исходного массива.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"isSearching: %d", isSearching);
// Return the number of rows in the section.
if(!isSearching)
return [originalArray count];
NSLog(@"isSearching - Return searchCopyListOfItems");
return [searchCopyListOfItems count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
if(!searching)
cell.textLabel.text = [originalArray objectAtIndex:indexPath.row];
else
cell.textLabel.text = [searchCopyListOfItems objectAtIndex:indexPath.row];
return cell;
}