bug:
i create 10 cells in tableview(just show number in cell),
now,every cell’s idx is 0~9 in m_pIndices
then do nothing,just click a button to delete the cell one by one,
when i clicked 6 times,i can’t delete the cell forever
then i checked the source code of CCTableView,i think it should be a bug
//remove first
this->_moveCellOutOfSight(cell);
m_pIndices->erase(idx);
// [m_pIndices shiftIndexesStartingAtIndex:idx+1 by:-1];
//in the for sequence,some cells' idx will be adjusted based on the deleted cell
//but the cells's idx in m_pIndices were not adjusted at the sametime,
//for the reason,when deleted 6 times,CCTableView can't find which idx=6's cell in m_pIndices
for (unsigned int i=m_pCellsUsed->count()-1; i > newIdx; i--) {
cell = (CCTableViewCell*)m_pCellsUsed->objectAtIndex(i);
this->_setIndexForCell(cell->getIdx()-1, cell);
}
//my resolution:
void CCTableView::_setIndexForCell(unsigned int index, CCTableViewCell *cell)
{
cell->setAnchorPoint(ccp(0.0f, 0.0f));
cell->setPosition(this->_offsetFromIndex(index));
int formerIdx = cell->getIdx();//
int nowIdx = index;//
cell->setIdx(index);
std::set::iterator it = m_pIndices->find(formerIdx);//
if(it != m_pIndices->end()){//
m_pIndices->erase(formerIdx);//
m_pIndices->insert(nowIdx);//
}//
}
“//” was new added