void CATableView::recoveryTableCell() { CCRect rect = this->getBounds(); rect.origin = getContentOffset(); rect.origin.y -= rect.size.height * 0.1f; rect.size.height *= 1.2f; std::map<CAIndexPath2E, CATableViewCell*>::iterator itr; for (itr=m_pUsedTableCells.begin(); itr!=m_pUsedTableCells.end(); itr++) { CATableViewCell* cell = itr->second; CC_CONTINUE_IF(cell == NULL); CCRect cellRect = cell->getFrame(); CC_CONTINUE_IF(rect.intersectsRect(cellRect)); m_pFreedTableCells[cell->getReuseIdentifier()].pushBack(cell); cell->removeFromSuperview(); cell->resetTableViewCell(); itr->second = NULL; CAView* line = m_pUsedLines[itr->first]; CC_CONTINUE_IF(line == NULL); m_pFreedLines.pushBack(line); line->removeFromSuperview(); m_pUsedLines[itr->first] = NULL; } }
void CATableView::clearData() { m_nSections = 0; m_nRowsInSections.clear(); m_nSectionHeaderHeights.clear(); m_nSectionFooterHeights.clear(); std::vector<std::vector<unsigned int> >::iterator itr; for (itr=m_nRowHeightss.begin(); itr!=m_nRowHeightss.end(); itr++) { itr->clear(); } m_nRowHeightss.clear(); std::vector<std::vector<CCRect> >::iterator itr2; for (itr2=m_rTableCellRectss.begin(); itr2!=m_rTableCellRectss.end(); itr2++) { itr2->clear(); } m_rTableCellRectss.clear(); m_rSectionRects.clear(); std::vector<std::vector<CCRect> >::iterator itr3; for (itr3=m_rLineRectss.begin(); itr3!=m_rLineRectss.end(); itr3++) { itr3->clear(); } m_rLineRectss.clear(); m_pSelectedTableCells.clear(); m_pUsedLines.clear(); std::map<CAIndexPath2E, CATableViewCell*>::iterator itr4; for (itr4=m_pUsedTableCells.begin(); itr4!=m_pUsedTableCells.end(); itr4++) { CATableViewCell* cell = itr4->second; CC_CONTINUE_IF(cell == NULL); m_pFreedTableCells[cell->getReuseIdentifier()].pushBack(cell); itr4->second = NULL; cell->removeFromSuperview(); cell->resetTableViewCell(); } m_pUsedTableCells.clear(); m_pSectionHeaderViews.clear(); m_pSectionHeaderViews.clear(); }