C.Johns
C.Johns

Reputation: 10245

how to make a uitableviewcell unselectable

I am putting together a search string based off 4 tableviewcells, each cell opens a subview and loads a bunch of data the user selects to set the cell of the previous view.

There is an order in which these cells needs to be set so that each preceding list of data in the subview is related to the data set in the parent view.

i.e. in the first cell you select a type of car, in the next cell you look at the models related to the type of car chosen.

That aside The basis of my question is how do I make a cell unselectable until the previous cell/s have been set.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//...
if (indexPath.section == 0) 
    {

if (indexPath.row == 0) // <<--- what could I put in here.... 
        {
//...
}

} }

Upvotes: 11

Views: 9332

Answers (3)

Dustin Williams
Dustin Williams

Reputation: 3913

Swift Syntax

cell.selectionStyle = UITableViewCellSelectionStyle.None

Upvotes: 3

Kevin
Kevin

Reputation: 56129

Use tableView:willSelectRowAtIndexPath:. Return nil for the rows you don't want selected.

Upvotes: 7

max_
max_

Reputation: 24521

Disallow the cell to track any interaction:

[cell setUserInteractionEnabled:NO];

or allow interaction, hiding the selection colour, and when clicked, do nothing.

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

- (void) tableViewDidSelectRow.... {
    if(indexPath.row == indexOfCellWithNoUserInteraction) {
        //do nothing
    }
}

Upvotes: 26

Related Questions