UITableview: How to Disable Selection for Some Rows but Not Others
ios, iphone, objective-c, uitableview
Solution
You just have to put this code into `cellForRowAtIndexPath`
To disable the cell's selection property: (while tapping the cell)
cell.selectionStyle = UITableViewCellSelectionStyleNone;
To enable being able to select (tap) the cell: (tapping the cell)
// Default style
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
// Gray style
cell.selectionStyle = UITableViewCellSelectionStyleGray;
Note that a cell with `selectionStyle = UITableViewCellSelectionStyleNone;` will still cause the UI to call `didSelectRowAtIndexPath` when touched by the user. To avoid this, do as suggested below and set.
cell.userInteractionEnabled = NO;
instead. Also note you may want to set `cell.textLabel.enabled = NO;` to gray out the item.
Problem
I am displaying in a group `tableview` contents parsed from XML. I want to disable the click event on it (I should not be able to click it at all) The table contains two groups. I want to disable selection for the first group only but not the second group. Clicking the first row of second group `navigates` to my tube `player view`. How can I make just specific groups or rows selectable? ``` - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.section!=0) if(indexPath.row==0) [[UIApplication sharedApplication] openURL:[NSURL URLWithString:tubeUrl]]; } ``` Thanks.