Riutilizzare un UableViewCell (altezza personalizzata per ognuno) in un client simile a Twitter
-
12-11-2019 - |
Domanda
Sto lavorando a un progetto come la versione iOS client di Twitter. Quando si progetta la tabella, ogni cella cambia l'altezza per adattarsi al suo contenuto (tweet).
Ma ho incontrato un problema: l'altezza della cella dello schermo corrente funziona bene, ma quando scorri verso il basso, la nuova cella riutilizza l'altezza delle vecchie celle.
Soluzione
Sì, la programmazione della tabella è dove l'approccio del modello di controllo del modello viene davvero utile. Se cambi altezza della tua cella da qualche parte come tableView:didDeselectRowAtIndexPath:
Potresti avere la sensazione che funzioni, ma non lo fa. Quello che puoi fare in questo metodo è modificare i tuoi dati e ricaricare la tabella (o parte di esso).
Come menzionato nei commenti sopra, dovrai:
Fornire un'altezza corretta per ogni cella in
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
Fornire vista corretta (cella) in
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Quando si desidera apportare un po 'di modifica, dovresti modificare i tuoi dati model
(o oggetto appropriato che tiene i dati relativi al contenuto) e quindi chiama uno dei UITableView's reload
metodi, forse:
- (void)reloadData
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
La documentazione di Apple può essere scarsa (anche se penso che sia abbastanza professionale): questi sarebbero i link di base per te:
Riferimento di classe uitableView
Riferimento protocollo UableViewDataSource
Riferimento del protocollo UableViewDelegate
Guida alla programmazione della visualizzazione della tabella per iOS