В моей таблице есть пользовательские ячейки, которые я инициализирую из класса UITableViewCell. У меня есть разделы для первых букв записей и есть indexPath, который создается динамически.
Я хотел добавить контроллер отображения поиска в табличное представление. Так я и сделал, создал все методы для фильтрации данных. Я уверен, что мои функции работают хорошо, потому что я вывожу количество массивов на экран для результатов поиска.
Моя проблема в том, что при первой загрузке просмотра данные отображаются на экране. Но когда я нажимаю на поиск и набираю букву, я получаю ошибку 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
. После того, как я использовал точку останова, я увидел, что после поиска моя пользовательская ячейка равна нулю. Данные существуют, но ячейка не инициализируется.
Вот код, который я использую для инициализации пользовательских ячеек.:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ObjectCell";
SpeakerCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSDictionary *myObject = [[sections valueForKey:[[[sections allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)] objectAtIndex:indexPath.section]] objectAtIndex:indexPath.row];
cell.label1.text = [myObject objectForKey:@"myValue"];
return cell;
}
Я считаю, что допустил ошибку, помещая элементы управления в IB. Поэтому я добавил скриншоты объектов:
Инспектор соединений для моего табличного представления
Инспектор соединений для моего контроллера отображения поиска
РЕДАКТИРОВАТЬ :Проблема на самом деле решена, я использовал UISearchBar вместо контроллера отображения поиска, но я думаю этот вопрос остается нерешенным. Так что я готов попробовать любые способы заставить его работать.