2014-11-13 3 views
5

Sto costruendo una vista tabella di base su iOS 8. Ho guardato il video del WWDC '14 sull'autosizing delle celle e sto cercando di riprodurre il concetto, ma sto avendo alcuni problemi. Su viewDidLoad: Sto chiamando:iOS UITableViewAutomaticDimension RowHeight Poor Performance/Jumping

//estimate for my cells though they may vary 

self.tableView.estimatedRowHeight = 300.0; 

self.tableView.rowHeight = UITableViewAutomaticDimension; 

Quando la vista e il tavolo si ricaricano, le prestazioni sono ok. Quando clicco su una cella, il programma mi porta in una vista di dettaglio. Quando premo il pulsante Indietro su quella vista e ritorna alla visualizzazione tabella, è quando le cose cominciano a comportarsi in modo strano. Le celle iniziano quindi a "saltare" mentre sto scorrendo. Saltando intendo che non scorrono in modo scorrevole, tendono a scuotere o saltare da un posto all'altro.

Dovrei aggiungere che la memoria non è un problema poiché le celle vengono riutilizzate e ci sono pochi dati in background. Anche i vincoli sulle mie celle (nel file storyboard) sono blu e non vedo eccezioni del vincolo di autolayout nel debugger.

Qualcun altro ha visto questo tipo di comportamento con UITableViewAutomaticDimension? È solo un bug di Apple o c'è dell'altro? Grazie.

+0

Sto affrontando lo stesso problema? qualche soluzione? –

+0

@AhmadRaza Quello che ho finito per fare era tornare alle celle codificate a mano per garantire il pieno controllo del layout e della funzione. Quindi, fondamentalmente, invece di usare il generatore di interfacce, ho appena disposto tutti gli elementi della cella nel codice e quindi ho eseguito l'override di tableView: heightForRowAtIndexPath: per dire alla tabellaVisualizza quanto sarà alta ogni cella. –

+1

Ho archiviato un bug con Apple (oltre a questo comportamento) e hanno confermato che si trattava di un bug (e di un duplicato di uno già archiviato) ma che non forniva ulteriori informazioni (piuttosto fastidioso). Quindi presumo che UITableViewAutomaticDimesion sia noto per essere un po 'buggato. Lo eviterei, se possibile, per ora. –

risposta

0

aggiungere più un metodo delegato al codice

- (CGFloat) tableView: (UITableView *) tableView estimatedHeightForRowAtIndexPath: (NSIndexPath *) indexPath {return Approxheight;}

verrà caricato UITableView presto rispetto all'ora corrente. spero che questo funzionerà per voi.

5

ho trovato strano problema utilizzando la linea self.tableView.rowHeight = UITableViewAutomaticDimension;

Ma poi, tutto ciò che è venuto molto meglio quando ho sostituito con il metodo delegati. Nel tuo caso sarebbe:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 

- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 300.0f; 
}