Comment obtenir le cell.textLabel.text de la cellule sélectionnée dans DetailViewController?
-
22-09-2019 - |
Question
J'ai un UITableView avec plusieurs entrys, et ceux-ci sont répartis dans plusieurs sections. Si je clique sur l'une des cellules, un DetailViewController est accessible. Dans ce DetailViewController, je veux utiliser les données de la cellule sélectionnée (le cell.textLabel et le cell.detailTextLabel), mais je ne peux pas accéder. Est-il possible de résoudre le problème pour que je puisse accéder aux textLabels des cellules sélectionnées avec le DetailViewController?
La solution
Une façon est d'ajouter des propriétés à DetailViewController pour les deux valeurs de texte. Puis, en didSelectRowAtIndexPath, faire quelque chose comme ceci:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//create your DetailViewController here
UIViewController *detailViewController = ...
//set the properties...
detailViewController.cellText = cell.textLabel.text;
detailViewController.cellDetailText = cell.detailTextLabel.text;
//push the detailViewController here
[detailViewController release];
}
Autres conseils
Initialisez le DetailViewController
avec le contenu cellulaire.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
DetailViewController *detailViewController = [[[DetailViewController alloc] initWithText:cell.textLabel.text] autorelease];
// push
}
Au lieu de l'enfant à lire à partir de son parent, il beaucoup plus propre que le parent fournissent les informations directement à son enfant.