Come ottenere il cell.textLabel.text dalla cella selezionata in DetailViewController?
-
22-09-2019 - |
Domanda
Ho un UITableView con diversi entrys, e questi sono suddivisi in diverse sezioni. Se clicco su una delle celle, un DetailViewController si accede. In quel DetailViewController, voglio utilizzare i dati dalla cella selezionata (il cell.textLabel e la cell.detailTextLabel), ma non posso accedere a questi. C'è la possibilità di risolvere il problema in modo da poter accedere ai textLabels dalle celle selezionate con il DetailViewController?
Soluzione
Un modo è quello di aggiungere oggetti da DetailViewController per i due valori di testo. Poi, nel didSelectRowAtIndexPath, fare qualcosa di simile:
- (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];
}
Altri suggerimenti
inizializzare il DetailViewController
con il contenuto della cella.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
DetailViewController *detailViewController = [[[DetailViewController alloc] initWithText:cell.textLabel.text] autorelease];
// push
}
Al posto del bambino che legge dal suo genitore, molto più pulita di avere il genitore fornire informazioni direttamente al suo bambino.