void KillCellAtTopOrBottom(TopOrBottom TorB) { UITableViewCellHolder cacheCellHolder = null; UITableViewCell cell = null; int index = 0; if (TorB == TopOrBottom.Top) { //find first cache cell cacheCellHolder = _cellHolders[_cacheStartRow]; cell = cacheCellHolder.Cell; //index+1 index = cell.Index+1; //delete or put it into pool EnqueueReusableCell(cacheCellHolder); //change cacheIndex _cacheStartRow = index; this.DEBUG_CacheStartRow = index; } else { //find last cache cell cacheCellHolder = _cellHolders[_cacheLastRow]; cell = cacheCellHolder.Cell; //index-1 index = cell.Index-1; //delete or put it into pool EnqueueReusableCell(cacheCellHolder); //change cacheIndex _cacheLastRow = index; this.DEBUG_CacheLastRow = index; } }
void GenerateCellToTopOrBottom(TopOrBottom TorB) { if (TorB == TopOrBottom.Top) { if (_cacheStartRow <= 0) { return; } UITableViewCellHolder oldCellHolder = _cellHolders[_cacheStartRow]; int index = oldCellHolder.Cell.Index-1; UITableViewCellHolder newCellHolder = _cellHolders[index]; UITableViewCell cell = DataSource.CellForRowAtIndexInTableView(this, index); newCellHolder.Cell = cell; float cellHeight = DataSource.HeightForRowInTableView(this, index); newCellHolder.Cell.Index = index; newCellHolder.Cell.SetRect(oldCellHolder.Cell.Left, oldCellHolder.Cell.Top/*+cellHeight*/, oldCellHolder.Cell.localSize.x, cellHeight); newCellHolder.Cell.SetDragTableView(this); SetTouchAbilityForCellHolder(newCellHolder); SetDeletabilityForCellHolder(newCellHolder); _cacheStartRow = index; this.DEBUG_CacheStartRow = index; } else { if (_cacheLastRow >= _cellHolders.Count-1) { return; } UITableViewCellHolder oldCellHolder = _cellHolders[_cacheLastRow]; int index = oldCellHolder.Cell.Index+1; UITableViewCellHolder newCellHolder = _cellHolders[index]; UITableViewCell cell = DataSource.CellForRowAtIndexInTableView(this, index); newCellHolder.Cell = cell; float cellHeight = DataSource.HeightForRowInTableView(this, index); newCellHolder.Cell.Index = index; newCellHolder.Cell.SetRect(oldCellHolder.Cell.Left, oldCellHolder.Cell.Bottom-cellHeight, oldCellHolder.Cell.localSize.x, cellHeight); newCellHolder.Cell.SetDragTableView(this); SetTouchAbilityForCellHolder(newCellHolder); SetDeletabilityForCellHolder(newCellHolder); _cacheLastRow = index; this.DEBUG_CacheLastRow = index; } }