Обновление
Мой оригинальный ответ не был правильным способом повторного использования UITableViewCell. Никогда не следует использовать «CellID% d% d» (indexPath.row & indexPath.column) в качестве идентификатора ячейки, что противоречит самой цели повторного использования ячейки. Он создаст отдельный UITableViewCell для каждой строки в таблице, и каждая из этих ячеек останется в памяти. Представьте, что произойдет, если у вас есть tableView с около 1000 строк.
Реальный ответ на вопрос OP: не забудьте сбросить UITableViewCell, возвращаемый dequeueReusableCellWithIdentifier
, поскольку он может вернуть ячейку, которая уже используется, и заполненный пользовательский интерфейс. Например, если вы не сбросили тексты в UILabel, он может содержать строки, которые должны были быть показаны в другой строке вашего tableView.
Мой оригинальный ответ (не используйте это)
Хирен, просто попробуй,
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"CellID%d%d",indexPath.section,indexPath.row]];
if (!cell){
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:[NSString stringWithFormat:@"CellID%d%d",indexPath.section,indexPath.row]] autorelease];
}
вместо
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];
if (!cell)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"cellID"] autorelease];
}
Пожалуйста, прочитайте это .. вы поймете, как дать идентификаторы ячеек ..