dequeueReusableCellWithIdentifier: devuelve nil incluso después de crear la instancia de celda

Estoy intentando usar un UITableView con un file .xib. Lo he hecho en el pasado con storyboards, donde declaras una identificación de reutilización en un prototipo dynamic. Tengo este código dentro de la - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath function - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath que debería funcionar:

 NSString *ReuseId = @"DefaultCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ReuseId]; if (cell == nil) { NSLog(@"cell == nil"); cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ReuseId]; } 

Sin embargo, cuando ejecuto esto, en lugar de imprimir cell == nil una vez que se imprime para cada fila.

¿¿Por qué??

Gracias.

La primera vez que abra la vista de tabla no habrá celdas para reutilizar porque todas estarán en uso. Las celdas comienzan a reutilizarse cuando comienza a desplazarse por la tabla y algunas celdas comienzan a desaparecer desde la parte superior.

actualizar

Digamos que tiene una vista de tabla que puede mostrar parcialmente 6 filas (5.5 por altura). Cuando UITableViewController carga la tabla con las celdas, crea 6 instancias de celda porque todas deben mostrarse al mismo time.

Cuando comienza a desplazarse y la primera celda está oculta, se agrega al set de celdas reutilizables. Eso es cuando se crea la octava celda (porque la séptima se creará nuevamente, porque la primera seguirá siendo visible a media altura), la primera se reutilizará.

Cuantas filas tienes Debería crear hasta 11 o 12 al principio en el iPhone. Según la altura de la vista de tabla y las alturas de las celdas.

Por lo tanto, si tiene less filas que las células caben en la vista, la reutilización de células nunca sucederá y no será necesaria.

 if (cell == nil) { NSLog(@"cell == nil"); cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:ReuseId]; } else { NSLog(@"We have a reused cell!"); } 

intente repetir las filas varias veces y desplácese lentamente. Ahora cada vez que está a punto de desplazarse por el primer píxel de una nueva celda en la vista, debe imprimir "¡Tenemos una celda reutilizada!".