web-dev-qa-db-fra.com

UITableView DidSelectRowAtIndexPath?

J'ai une vue de table avec quelques éléments (tout le texte). Lorsque l'utilisateur clique sur la ligne, je souhaite que le texte de cette cellule soit ajouté à un tableau.

Comment extraire le texte de la cellule?

J'ai déjà:

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

}

Existe-t-il une ligne simple que je peux utiliser pour extraire le texte de la cellule sur laquelle l'utilisateur clique?

25
user964627

Utilisez UITableView's cellForRowAtIndexPath:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
}
94
Joe

C'est l'inverse de ce que vous avez fait dans cellForRowAtIndexPath.

 [myArray addObject: [datasource objectAtIndex:indexPath.row]];
6
Rayfleck

En général, vous pouvez trouver la plupart des réponses à des questions comme celle-ci dans la documentation Apple. Pour ce cas, regardez sous ITableView Class Reference et vous verrez un en-tête de section: Accès aux cellules et aux sections. Cela vous donne la méthode suivante:

– cellForRowAtIndexPath:

Maintenant, utilisez ceci pour accéder à la cellule, puis utilisez récupérer le texte de la cellule (si vous ne savez pas comment, regardez sous le ITableViewCell Class Reference .

Dans l'ensemble, votre méthode pourrait ressembler à ceci:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *cellText = cell.textLabel.text;
    [myArray addObject:cellText];
}
4
PengOne

Ma première supposition serait d'obtenir l'index, [ligne indexPath]; puis récupérer les données de votre source de données (un tableau ou des données de base) plutôt que directement à partir de la table elle-même.

3
Antwan van Houdt

Version Swift:

let cell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
let cellText: String = cell.textLabel.text
2
Gleb Karpushkin