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