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)
{
}
}
}
}
[(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];
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".
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
Pour Swift 4
let indexPath = IndexPath(row: 0, section: 0)
let cell = tableView.cellForRow(at: indexPath)
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];
}
Vous pouvez utiliser le code suivant pour obtenir la dernière cellule.
UITableViewCell *cell = [tableView cellForRowAtIndexPath:lastIndexPath];
rapide
let indexpath = IndexPath(row: 0, section: 0)
if let cell = tableView.cellForRow(at: indexPath) as? <UITableViewCell or CustomCell> {
cell.backgroundColor = UIColor.red
}
Swift
let indexpath = NSIndexPath(row: 0, section: 0)
let currentCell = tableView.cellForRow(at: indexpath as IndexPath)!