Saturday, June 8, 2013

UITableViewCell UITableViewCellSelectionStyleNone example in Objective C (iOS).


UITableViewCell UITableViewCellSelectionStyleNone

Cell Selection Style
The style of selected cells.

typedef enum {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray
} UITableViewCellSelectionStyle;

Constants
UITableViewCellSelectionStyleNone
The cell has no distinct style for when it is selected.
UITableViewCellSelectionStyleBlue
The cell when selected has a blue background. This is the default value.
UITableViewCellSelectionStyleGray
Then cell when selected has a gray background.

Discussion of [UITableViewCell UITableViewCellSelectionStyleNone]
You use these constants to set the value of the selectionStyle property.

UITableViewCell UITableViewCellSelectionStyleNone example.
ll you have to do is set the selection style on the UITableViewCell instance using either:

cell.selectionStyle = UITableViewCellSelectionStyleNone;
or

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Further, make sure you either don't implement -tableView:didSelectRowAtIndexPath: in your table view delegate or explicitly exclude the cells you want to have no action if you do implement it.

Example of [UITableViewCell UITableViewCellSelectionStyleNone].
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // A case was selected, so push into the CaseDetailViewController
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (![cell selectionStyle] == UITableViewCellSelectionStyleNone) {
        // Handle tap code here
    }
}

UITableViewCell UITableViewCellSelectionStyleNone example.
Use this to make the cell look like it is disabled and non-selectable:

cell.selectionStyle = UITableViewCellSelectionStyleNone;
Important: note that this is only a styling property, and does not actually disable the cell. In order to do that, you have to check for selectionStylein your didSelectRowAtIndexPath: delegate implementation:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if(cell.selectionStyle == UITableViewCellSelectionStyleNone) {
        return;
    }

    // do your cell selection handling here
}

End of UITableViewCell UITableViewCellSelectionStyleNone example article.