2010-12-14 11 views
17

Ho tableview con alcuni nomi su ogni cella, come posso ottenere quel nome quando selezioni una riga?come ottenere il titolo della riga selezionata in UITableview

So che devo usare metodo delegato

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

ma come posso ottenere che il titolo di quella riga?

grazie in anticipo

riguarda

+0

Le righe non hanno titoli. Cosa stai cercando di fare? –

+0

intendo ogni cella in UItableview – appleDE

risposta

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

Questo snippet recupera la cella selezionata e memorizza la proprietà text in un NSString.


Tuttavia, Non consiglio questo. È meglio mantenere separati i livelli di dati e di presentazione. Utilizzare un archivio dati di supporto (ad esempio un array) e accedervi utilizzando i dati nell'oggetto indexPath passato (ad esempio l'indice da utilizzare per accedere all'array). Questo archivio dati sarà lo stesso utilizzato per popolare la tabella.

+0

Fantastico! Molte grazie. – iDev

9

Supponendo che si sta utilizzando uno standard UITableViewCell, è possibile ottenere la cella utilizzando

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

poi accedere alle proprietà di visualizzazione proprietà di testo tramite:

cell.textLabel.text 
cell.detailTextLabel.text 
+0

E questo fa cosa? :-) – Eiko

+0

sì che cosa fa? – appleDE

+0

(+1) Utile anche per il piccolo errore di battitura. nel codice è UITableViewCell e scrivi UITableView (ma lo scrivi correttamente nel testo sopra. – HpTerm

2

Dopo aver registrato una delle classi come delegato tramite la proprietà delegato UITableView, è sufficiente implementare il metodo tableView:didSelectRowAtIndexPath:, che verrebbe chiamato quando l'utente ha selezionato una riga. (Vedere la UITableViewDelegate Protocol Reference per ulteriori informazioni.)

È quindi possibile estrarre il testo dell'etichetta dalla cella selezionata tramite ...

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

..se questo è davvero ciò che si richiede.

3

è possibile accedere a ciascuna riga del uitabelview usando la seguente funzione (uitableview-):

cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 

proposito, per accedere Tableview in metodi diversi dal metodo delegato di UITableView, bisogna collegarlo in IB (per esempio ..)

speranza che aiuta

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

    NSString *rowTitle=[tableView cellForRowAtIndexPath:indexPath].textLabel.text; 
} 

Qui,

[tableView cellForRowAtIndexPath: indexPath] fornisce la cella selezionata e quindi .textLabel.text fornisce l'etichetta per quella cella.

Problemi correlati