Quando si utilizza UITableView, è possibile riutilizzarne le celle utilizzando i metodi [[ UITableViewCell alloc] initWithStyle: reuseIdentifier:]
e [uiTableViewInstance dequeueReusableCellWithIdentifier:]
. Ciò aiuta a mantenere la memoria sotto controllo per le tabelle enormi in quanto solo poche celle sono presenti nella vista in un determinato istante.Come riutilizzare/riciclare elementi personalizzati come fa uitableviewcell?
Voglio creare un UIScrollView
che ha molte sotto-visualizzazioni. L'inserimento di tutte le sottoview richiede molta memoria e tempo iniziale che voglio evitare. L'API di Apple offre il modo di riutilizzare tali componenti personalizzati (un UIView o una sottoclasse di esso qui) proprio come le viste di cella usando un identificatore?
Creerò uno se non ci sono API, ma ho qualche dubbio in merito. Ad esempio, per ogni nuova sottoview, sto impostando la sua posizione frame, dopo le visualizzazioni precedenti. Come dovrei andare sull'aggiornamento della cornice per ogni sottoview durante il riciclaggio? Devo cancellare e ricaricare il contenuto di ogni sottomenu quando viene riciclato? Devo fare tutti questi calcoli in un altro thread per evitare lo scroll? In tutto, mi piacerebbe avere un'esperienza scorrevole come in UITableView con tutte le cose che riutilizzano.
Ecco un esempio di codice che ho scritto finora:
int numberOfPages = 0;
int pageWidth = 100;
int pageHeight = 100
UIScrollView *myScrollView = //allocate and initialize a scrollview
//set its size to 100 by 100 (width equal to pageWidth)
//set paging enabled for myScrollView
Aggiunta subviews ad esso da un metodo, che si chiama più volte
- (void) appendSubViewToScrollView {
UIView *view = //allocate and initialize a view and dump data in it.
CGRect rect = view.frame;
rect.size.height = pageHeight;
rect.size.width = pageWidth;
rect.origin = CGPointMake(pageHeight * numberOfPages, 0);
view.frame = rect;
[myScrollView addSubview:view];
numberOfPages++;
[scrollView setContentSize:CGSizeMake(pageHeight * numberOfPages, pageWidth)];
[view release];
}
Edit:
Qualche intuizione nel modo in cui tableview e le sue celle ottengono questo dietro le quinte sarebbe utile.
Grazie per la risposta Viggio. C'è qualche codice relativo a questo? Potrei usare qualche riferimento. E sì, sono uno sviluppatore registrato. Puoi indicare il video pertinente per questo caso? ("Quadro delle applicazioni"? Vedrò il resto a piacimento). Scaricherò anche il codice di esempio. Sembra interessante e utile. – Sailesh
Si prega di contrassegnare questa risposta come accettato con il segno di spunta (sotto le frecce di voto su/giù.) – JoePasq
Purtroppo non ricordo quale sia il video che spiega questa tecnica, ma ricordo che è stato spiegato con una demo. C'è un video chiamato "Progettare le app con Scroll Views", ma non sono sicuro che sia il video giusto, comunque vale la pena guardarlo in ogni caso (spiega alcune belle tecniche). la home page dei video del WWDC inizia qui: http://developer.apple.com/videos/wwdc/2010/ da dove si effettua l'accesso con il proprio account sviluppatore, quindi sarà possibile aprire iTunes e scaricare o solo visualizzare i video. Quello a cui mi riferisco è il 104 ("Designing Apps with Scroll Views"). – viggio24