У меня есть приложение с UITableView с различными пользовательскими UITableViewCells (и идентификаторами ячеек).UITableView dequeueReusableCellWithIdentifier: return nil
В моем реализованном tableView:cellForRowAtIndexPath:
методе я использую dequeueReusableCellWithIdentifier:
метод в UITableView и это дает мне UITableViewCell ожидаемого типа при вызове во время пользователь прокрутки таблицы, но, если я пытаюсь получить многоразовые клетки в других частях коды Я получаю нуль в результате, поэтому мне нужно создать новую ячейку.
Например, код у меня есть, что вставляет новые объекты, которые будут отображаться, выглядит следующим образом:
...
[myDataSource addObject:newObject];
...
[self.tv beginUpdates];
[self.tv insertRowsAtIndexPaths:paths withRowAnimation:rowAnimation];
[self.tv endUpdates];
...
, который запускает tableView:cellForRowAtIndexPath:
и на том, что называют dequeueReusableCellWithIdentifier:
возвращает ноль, хотя ячейка, которая только что вышел на экран был одного типа (тот же идентификатор ячейки), который я вставляю.
Должно ли это быть многоразовой ячейкой? В моем случае это может стать проблематичным, поскольку мои ячейки имеют несколько «тяжелый» метод init из-за их сложности.
Заранее спасибо
edit1: Просто чтобы прояснить, я хочу знать, почему нет неиспользуемых экземпляров ячейки в кэше таблицы для возврата, так как некоторые клетки (того же типа, что я вставив) просто бросить курить быть видимым?
Это нормальное поведение, ячейка, которую вы вставляете, еще не существует, поэтому контроллер должен ее инициировать. –
, но ячейка, которую я вставил, имеет тот же тип (и тот же идентификатор) ячейки, которая просто перестала быть видимой, теперь она должна быть повторно использована, не так ли? – ZeCodea