Получить все ячейки в UITableView?
Мне нужно получить массив всех ячеек в моем UITableView. В настоящее время я использую следующий метод:
-(NSArray *)allTableViewCellsArray
{
NSMutableArray *cells = [[NSMutableArray alloc] init];
for (NSInteger j = 0; j < [tableView numberOfSections]; ++j)
{
for (NSInteger i = 0; i < [tableView numberOfRowsInSection:j]; ++i)
{
[cells addObject:[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
}
}
return cells;
}
У меня был некоторый успех с ним, однако я пришел, чтобы обнаружить, что он падает, когда клетка не видна. Итак, как я могу получить массив всех ячеек в моем UITableView независимо от того, видны они или нет?
3 ответов:
Вы повторно используете ячейки таблицы в своей реализации? Если это так, я думаю, что вы не можете получить все объекты UITableViewCell из вашего UITableView из-за логики повторного использования ячейки UITableView.
Поэтому вам нужно будет "отключить" механику повторного использования ячеек в вашем коде. Это можно сделать, не создавая очереди (т. е. больше не используя метод
dequeueReusableCellWithIdentifier) в ваших ячейках внутри методаcellForRowAtIndexPathделегата источника данных табличного представления и передавая nil для свойстваreuseIdentifierдля ячейки init метод (initWithStyle:reuseIdentifier:).Тогда ваш метод
allTableViewCellsArray, вероятно, сработает! Но я думаю, что тебе все равно не повезет с этим делом.Из документов Apple для
[tableView cellForRowAtIndexPath:]:Return Value An object representing a cell of the table or nil if the cell is not visible or indexPath is out of range.
Нашел решение. Вместо того, чтобы захватить все ячейки в любой момент времени, который я выберу, поскольку это не работает; я создаю массив всех ячеек, как они сделаны, таким образом, каждая ячейка повторяется через смысл, я могу добавить их все в массив.
Я делаю это в методе
willDisplayCell.
Comments