web-dev-qa-db-fra.com

Comment atteindre la cellule actuellement sélectionnée dans didSelectRowAtIndexPath?

Je souhaite modifier le type de vue accessoire d'une cellule via la méthode: didSelectRowAtIndexPath, c'est-à-dire lorsqu'une ligne est sélectionnée, je souhaite modifier le type de vue accessoire, puis-je le faire à l'intérieur de cette méthode?

65
JaHelia

Vous pouvez obtenir la cellule à partir de la méthode didSelectRowAtIndexPath: en utilisant la méthode indexPath comme ceci.

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
136
EmptyStack

In Swift 3.: Vous pouvez utiliser ces 2 façons, selon vos besoins

 let cell:UITableViewCell = tableView.cellForRow(at: indexPath) as UITableViewCell

o

let cell:CustomTableViewCell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell

Bon codage !!

6
Tejinder
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
     UITableViewCell *myCell = [tableView cellForRowAtIndexPath:indexPath];
     // Access accessory View  as below.  
     UIView * myCellAccessoryView = myCell.accessoryView;
}
5
Jhaliya

Utilisez la fonction ci-dessous et passez le chemin d'index de la ligne sélectionnée afin que la cellule particulière soit rechargée à nouveau.

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Autre solution: stocker l'index de ligne sélectionné et effectuer un rechargement de tableview. Puis dans cellForRowAtIndexPath vérifiez la ligne sélectionnée et changez la vue accessoire de la cellule.

3
Banu Prakash

rapide

Vous pouvez obtenir la cellule à partir de la méthode didSelectRowAtIndexPath: en utilisant l'indexPath comme ceci:

 let cell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath)
3
odemolliens

Stockez le chemin d'index sélectionné. par exemple: NSInteger selectedIndexPath; puis suivez l'étape ci-dessous. définissez votre vue des accessoires.

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
    AddressTableViewCell *cell=(AddressTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    cell.backgroundColor=[UIColor lightGrayColor];

    Address *addr=[self.locationArray objectAtIndex:indexPath.row];

    cell.titleLabel.text = addr.addressTitle;
    cell.detailLabel.text = addr.addressDetail;

        if (indexPath.row == selectedIndexPath) {
            [cell.selectButton setImage:[UIImage imageNamed:@"checkboxFilled"] forState:UIControlStateNormal];
        }
        else {
            [cell.selectButton setImage:[UIImage imageNamed:@"checkbox"] forState:UIControlStateNormal];

        }

    return cell;
}


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    selectedIndexPath=indexPath.row;

    [self.tableView reloadData];

}
1
Chandramani