 <p>First modify your tableView:cellForRowAtIndexPath: implementation as follows. Then you need to implement the click handler. One way would be in the MyCell class. Another would be to override <a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/index.html#//apple_ref/occ/instm/UITableView/selectRowAtIndexPath:animated:scrollPosition:." rel="nofollow">selectRowAtIndexPath</a>. Without knowing more about what you want (e.g. multiple vs single selection), it's hard to give actual code but here's something.</p> <pre><code>BOOL clickedRows[MAX_ROWS]; // Init this array as all false in your init method. It would be better to use NSMutableArray or something similar... // selectRowAtIndexPath code int row = indexPath.row if(clickedRows[row]) clickedRows[row]=NO; // we reverse the selection for the row else clickedRows[row]=YES; [self.tableView reloadData]; // cellForRowAt... code MyCell *cell = [tableView dequeueResuableCell... if(cell.clicked) { // Nice Nib [tableView registerNib:[UINib nibWithNibName... for CellReuse... } else { // Grey Nib [tableView registerNib:[UINib nibWithNibName... for CellReuse... } </code></pre>