web-dev-qa-db-fra.com

Comment puis-je obtenir un uitableViewCell par indexPath?

Comment puis-je obtenir un UITableViewCell par indexPath? Comme ça:

J'utilise le UIActionSheet lorsque je clique sur confirmer UIButton je veux changer le texte de la cellule.

Le nowIndex que je définis comme une propriété

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        NSInteger section =  [nowIndex section];
        NSInteger row = [nowIndex row];
        NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
        formatter.dateFormat = @"yyyy-MM-dd";

        if (section == 0)
        {
            if (row == 0)
            {

            }
            else if (row == 1)
            {
                UILabel *content = (UILabel *)[[(UITableView *)[actionSheet ] cellForRowAtIndexPath:nowIndex] viewWithTag:contentTag];
                content.text = [formatter stringFromDate:checkInDate.date];
            }
            else if (row == 2)
            {

            }
        }
    }
}
68
phpxiaoxin
[(UITableViewCell *)[(UITableView *)self cellForRowAtIndexPath:nowIndex]

vous donnera uitableviewcell. Mais je ne suis pas sûr de ce que vous demandez exactement! Parce que vous avez ce code et que vous demandez toujours comment obtenir uitableviewcell. Quelques informations supplémentaires aideront à vous répondre :)

ADD: Voici une syntaxe alternative qui permet d'obtenir les mêmes résultats sans la conversion.

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:nowIndex];
116
Manjunath

Enfin, je reçois la cellule en utilisant le code suivant:

UITableViewCell *cell = (UITableViewCell *)[(UITableView *)self.view cellForRowAtIndexPath:nowIndex];

Parce que la classe est étendue UITableViewController:

@interface SearchHotelViewController : UITableViewController

Donc, le self est "SearchHotelViewController".

27
phpxiaoxin

Voici un code pour obtenir une cellule personnalisée à partir du chemin de l'index

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:2 inSection:0];
 YourCell *cell = (YourCell *)[tblRegister cellForRowAtIndexPath:indexPath];

Pour Swift

let indexpath = NSIndexPath(forRow: 2, inSection: 0)
let currentCell = tblTest.cellForRowAtIndexPath(indexpath) as! CellTest

Pour Swift 4 (pour collectionview))

let indexpath = NSIndexPath(row: 2, section: 0)
let cell = self.colVw!.cellForItem(at: indexpath as IndexPath) as? ColViewCell
21
Hardik Thakkar

Pour Swift 4

    let indexPath = IndexPath(row: 0, section: 0)
    let cell = tableView.cellForRow(at: indexPath)
10
Celil Bozkurt

Je ne sais pas trop quel est votre problème, mais vous devez spécifier le nom du paramètre comme suit.

-(void) changeCellText:(NSIndexPath *) nowIndex{
    UILabel *content = (UILabel *)[[(UITableViewCell *)[(UITableView *)self cellForRowAtIndexPath:nowIndex] contentView] viewWithTag:contentTag];
    content.text = [formatter stringFromDate:checkInDate.date];
}
6
David Kanarek

Vous pouvez utiliser le code suivant pour obtenir la dernière cellule.

UITableViewCell *cell = [tableView cellForRowAtIndexPath:lastIndexPath];
6
Hardik Mamtora

rapide

let indexpath = IndexPath(row: 0, section: 0)
if let cell = tableView.cellForRow(at: indexPath) as? <UITableViewCell or CustomCell> {
    cell.backgroundColor = UIColor.red
}
4
Krunal

Swift

let indexpath = NSIndexPath(row: 0, section: 0)
let currentCell = tableView.cellForRow(at: indexpath as IndexPath)!
4
Oscar