Domanda

Sto sviluppando un'applicazione iOS e sto avendo alcuni problemi di decidere come affrontare un problema.

Sto usando due UITableViewControllers per visualizzare viste diverse degli stessi dati. Uno è un elenco principale, e l'altro contiene solo gli elementi che sono contrassegnati come "preferito". Anche gli oggetti sono ad altezza variabile, così io sto usando "heightForRowAtIndexPath" per indicare l'altezza per ogni elemento. Il problema è la velocità, quando passo da una vista all'altra, ha bisogno di essere aggiornato per visualizzare le modifiche apportate nell'altro (contrassegnato preferito / unfavourite).

  

Soluzione # 1 :

     

ricaricare i dati ogni volta una vista tabella diventa visibile. Questo non funziona bene, perché anche se i dati sono display utilizzando lazy loading, il "heightForRowAtIndexPath" è chiamato per ogni oggetto prima che i dati viene caricato, e il suo lento. sul mio iPhone 4 un elenco di circa 300 articoli dura circa quattro secondi per caricare, anche se i valori di altezza vengono memorizzati nella cache (il collo di bottiglia sta applicando l'altezza, non il recupero di esso).

  

Soluzione # 2 :

     

manualmente manipolare le tabelle quando vengono apportate modifiche. Non ho provato questo, ma sarebbe probabilmente buggy. I vostri pensieri?

  

Soluzione # 3 :

     

Utilizzando un sistema di tipo di notifica per notificare l'altra tabella aggiornamenti di elementi che potrebbero attualmente essere caricati. Non ho provato questo, perché sembra sopra le righe e potrebbe non funzionare affatto.

Qualcuno sa di un modo semplice per mostrare due viste degli stessi dati?

Nessuna soluzione corretta

Altri suggerimenti

È possibile ricaricare n righe con reloadRowsAtIndexPaths: withRowAnimation. Non ho mai fatto, ma penso che sia lì perché è più veloce, così si potrebbe desiderare di provare.

Al heightForRow: coso, mi ricordo leggere nella documentazione Apple che tale funzione è davvero un killer per le prestazioni. Forse si potrebbe prendere l'altezza massima delle righe, e set che nella UITableView.rowHeight?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top