Al usar UITableView, podemos reutilizar sus celdas usando los métodos [[ UITableViewCell alloc] initWithStyle: reuseIdentifier:]
y [uiTableViewInstance dequeueReusableCellWithIdentifier:]
. Esto ayuda a mantener la memoria bajo control en mesas enormes, ya que solo hay unas pocas celdas en la vista en un instante dado.¿Cómo reutilizar/reciclar elementos personalizados como lo hace uitableviewcell?
Quiero crear un UIScrollView
que tenga muchas subvistas. Insertar todas las subvistas toma mucha memoria y tiempo inicial que quiero evitar. ¿Apple API proporciona formas de reutilizar tales componentes personalizados (una UIView o una subclase de ella aquí) al igual que las vistas de celda con un identificador?
Crearé uno si no hay API, pero tengo algunas dudas con respecto a esto. Por ejemplo, para cada nueva subvista, estoy configurando su posición de marco, después de las vistas previas. ¿Cómo debo actualizar el marco para cada subvista mientras reciclo? ¿Debo eliminar y volver a cargar el contenido de cada subvista a medida que se recicla? ¿Debo hacer todos estos cálculos en otro hilo para evitar el desplazamiento irregular? En general, me gustaría tener una experiencia de desplazamiento suave como en UITableView con todas las cosas de reutilización.
Este es un ejemplo de código que he escrito hasta ahora:
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
Adición subvistas a ella desde un método, que se llama varias veces
- (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];
}
Editar:
Algunos visión en cómo TableView y sus células logran esto detrás de las escenas sería útil.
Gracias por la respuesta Viggio. ¿Hay algún código relacionado con esto? Podría usar alguna referencia. Y sí, soy un desarrollador registrado. ¿Puedes señalar el video relevante para este caso? ("Frameworks de aplicaciones"? Voy a ver el resto en el ocio). También descargaré el código de muestra. Parece interesante y útil. – Sailesh
Marque esta respuesta como aceptada con la marca de verificación (debajo de las flechas de voto arriba/abajo). – JoePasq
Lamentablemente, no recuerdo cuál es el video que explica esta técnica, pero recuerdo que se explicó con una demostración. Hay un video llamado "Diseño de aplicaciones con vistas de desplazamiento", pero no estoy seguro de si es el video correcto, de todos modos vale la pena mirarlo en cualquier caso (explica algunas técnicas hermosas). la página de inicio de videos de WWDC comienza aquí: http://developer.apple.com/videos/wwdc/2010/ desde donde inicia sesión con su cuenta de desarrollador, y luego podrá abrir iTunes y descargar o simplemente ver los videos. El que me refiero es el 104 ("Diseño de aplicaciones con vistas de desplazamiento"). – viggio24