UitableView ... nel modo corretto
-
12-11-2019 - |
Domanda
Sto cercando di creare un uitableView come l'app del calendario nativo:
Ma sto cercando di imparare il modo migliore per farlo. Sono in grado di ottenerlo per la maggior parte con un'istruzione Switch nel metodo CellForrowAtIndexPath, ma ho problemi a cambiare il testo quando viene selezionata una cella.
Per qualche motivo la cella. Hisselced è sempre no e non ho modo di ricaricare la tabella dopo che un'altra cella è stata comunque selezionata.
Dovrei sottoclasse UtableViewCell per qualcosa di così semplice e conservare una serie di celle?
Qualsiasi aiuto sarebbe apprezzato, grazie.
Soluzione
Non è necessario sottoclasse, come affermato nel App Doc La funzione di delega:
tableView:willSelectRowAtIndexPath:
dovrebbe fare il trucco
MODIFICARE:
Di seguito trovi un codice che dovrebbe dimostrare l'idea di usare il delegato. Si prega di notare che questo codice non è testato, poiché attualmente non sono di fronte al mio codice X.
-(void)willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (prevIndexPath != nil) {
UITableViewCell* prevCell = [self.tableView cellForRowAtIndexPath: prevIndexPath];
prevCell.textLabel.textColor = [UIColor black]; // your initial color here
}
UITableViewCell* cell = [self.tableView cellForRowAtIndexPath: indexPath];
cell.textLabel.textColor = [UIColor green];
prevIndexPath = indexPath;
}
Assicurati di impostare il protocollo UableViewDelegate sulla tua classe di controllo che gestisce la tua tabella e impostare tableviews.delegate su quello.
Per eseguire questo codice, devi anche definire una proprietà o una variabile con il nome PrevindexPath. Questo contiene la cella precedentemente selezionata necessaria per tornare alla cella al suo colore iniziale.