Tengo un UITableView con pagingEnabled. Cada celda ocupa el área de visualización de la tabla. Es decir, cada celda tiene la misma altura y ancho que la tabla. Estoy usando celdas personalizadas que tienen una propiedad de nombre. Me gustaría mostrar el nombre de la celda actual (visible) en una etiqueta. Esto funciona bien para la primera y la última celda, pero cualquier cosa intermedia no es tan fácil. El problema es que cellForRowAtIndexPath se llama dos veces para estas celdas intermedias. Esto es lo que parece desplazarse desde la primera hasta la última celda y luego volver. He enumerado los índices en orden como incendios cellForRowAtIndexPath para esa fila:Obtener la celda visible de UITableView pagingEnabled
Row indexPath.row
0 0 //view loads and table appears
1 1,2 //user scrolls to second cell. cellForRowAtIndexPath fires twice. First time indexPath.row is one and second time it is two. This causes cell two's name to display in the label, rather than cell one.
2 2,3
3 3
//user starts scrolling back to first cell
2 1,2
1 1,0
0 0
pude configurar utilizar un objeto NSDate para detectar si estoy en una fila del medio. Al diferir la hora anterior con la actual, lo sabré. Sin embargo, si el usuario se desplaza rápidamente por las celdas, probablemente no funcione. ¿Hay alguna otra forma de hacerlo?
He intentado usar variaciones de las propiedades de las celdas visibles pero eso no funcionó. La UITableView cargará la siguiente celda incluso si no está visible, lo que hace que forme parte de las celdas visibles.
El único problema con esto es que no están clasificados ... ¿hay una forma rápida y fácil de ordenarlos o agregarlos a la matriz en el orden correcto? –
+1 este responde mis preguntas también. –
también puede obtener celdas visibles con [tableView visibleCells]; – George