Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UITableView Setting some cells as "unselectable"

How can I set the UITableView's cell property to be unselectable? I don't want to see that blue selection box when the user taps on the cell.

like image 921
Mugunth Avatar asked May 01 '09 17:05

Mugunth


People also ask

What is Tableview cell?

A table view tracks the height of rows separately from the cells that represent them. UITableView provides default sizes for rows, but you can override the default height by assigning a custom value to the table view's rowHeight property. Always use this property when the height of all of your rows is the same.

How do I delete a cell in UITableView?

So, to remove a cell from a table view you first remove it from your data source, then you call deleteRows(at:) on your table view, providing it with an array of index paths that should be zapped. You can create index paths yourself, you just need a section and row number.

What does Indexpath row return?

row will be 0. Then it will be 1, then 2, then 3 and so on. You do this so that you can get the correct string from the array each time.


1 Answers

To Prevent Row Selection

To completely prevent selection of the UITableViewCell, have your UITableViewDelegate implement tableView:willSelectRowAtIndexPath:. From that method you can return nil if you do not want the row to be selected.

- (NSIndexPath *)tableView:(UITableView *)tv willSelectRowAtIndexPath:(NSIndexPath *)path {     // Determine if row is selectable based on the NSIndexPath.      if (rowIsSelectable) {         return path;     }     return nil; } 

This prevents the row from being selected and tableView:didSelectRowAtIndexPath: from being called. Note, however, that this does not prevent the row from being highlighted.

To Prevent Row Highlighting

If you would like to prevent the row from being visually highlighted on touch, you can ensure that the cell's selectionStyle is set to UITableViewCellSelectionStyleNone, or preferably you can have your UITableViewDelegate implement tableView:shouldHighlightRowAtIndexPath: as follows:

- (BOOL)tableView:(UITableView *)tv shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {     // Determine if row is selectable based on the NSIndexPath.      return rowIsSelectable; } 
like image 53
Sebastian Celis Avatar answered Sep 21 '22 15:09

Sebastian Celis