Я пытаюсь реализовать searchDisplayController для табличного представления в Objective- C.
Табличное представление, которое использует прототип пользовательской ячейки, загружает и отображает пользовательский штраф ячейки. Тем не менее, когда я go для поиска, я получаю:
NSInternalInconsistencyException ', причина:' невозможно заблокировать ячейку с идентификатором Cell - необходимо зарегистрировать nib или класс для идентификатора или подключить прототип ячейка в раскадровке '
Основываясь на довольно обширных ответах SO на проблемы этого типа, основные причины этого выглядят следующим образом: 1) либо вы не определили идентификатор ячейки в раскадровке, либо, наоборот, зарегистрировали ячейку в коде, 2) вам нужно очистить проект или 3) если вы создали идентификатор в раскадровке, вы не загрузили ViewController из его раскадровки, а каким-то другим способом, и, следовательно, идентификатор ячейки не был создан и распознан .
В моем случае, однако, обычный просмотр таблицы работает нормально. Это просто searchDisplayController, который вызывает ошибку. Кроме того, если я регистрирую ячейку tableview в коде для searchDisplayController, то я не получаю эту ошибку, и searchDisplayController появляется, но пусто - я думаю, потому что в нем отображаются разные ячейки (созданные в коде), чем ячейка, созданная в раскадровке, которая имеет правильные выходы.
Я очистил проект. Тем не менее, у меня есть ощущение, что что-то облажалось в раскадровке в какой-то момент, но мне не хочется перестраивать viewcontroller и searchDisplayController. Что бы это ни стоило, V C находится в своей собственной раскадровке, но загружается через сеанс раскадровки из основной раскадровки.
cellForRow кажется стандартным:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = @"Cell";
itemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if (!cell) {
cell = [[myCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier];
}
NSUInteger row = [indexPath row];
if (tableView == self.searchDisplayController.searchResultsTableView) {
self.item = [searchResults objectAtIndex:row];
} else {
self.item = [myItems objectAtIndex:row];
}
[self configureCell:cell withItem:self.item];
return cell;
}
Тот факт, что обычный нагрузка tableview правильно предполагает, что tableview правильно подключен Что еще я могу попробовать.