2011-11-30 11 views
26
NSArray * arrayOfVisibleTVC=[BNUtilitiesQuick ListController].tableViewA.visibleCells; 
NSLog(@"array : %@", arrayOfVisibleTVC); 

mostrarácómo saber el índice de UITableView.visibleCells?

"<UITableViewCell: 0x76c22a0; frame = (0 0; 320 75); autoresize = W; layer = <CALayer: 0x76bf770>>", 
"<UITableViewCell: 0x76cfec0; frame = (0 75; 320 75); autoresize = W; layer = <CALayer: 0x769d260>>", 
"<UITableViewCell: 0xe245f70; frame = (0 150; 320 75); autoresize = W; layer = <CALayer: 0xe245ed0>>", 
"<UITableViewCell: 0xe248980; frame = (0 225; 320 75); autoresize = W; layer = <CALayer: 0xe2488c0>>", 
"<UITableViewCell: 0xe24afa0; frame = (0 300; 320 75); autoresize = W; layer = <CALayer: 0xe24aee0>>" 

y con esta

UITableViewCell * lastObjectOfArray=arrayOfVisibleTVC.lastObject; 
int indexpathLastObject= (lastObjectOfArray.frame.origin.y/new.frame.size.height); 

Sé que el último de arrayOfVisibleTVC.lastObject que utilizo para obtener indexpath. pero creo que hay otra forma de obtener indexpath de TableViewcell que se muestra ... ¿alguien puede ayudarme?

para que pueda obtener indexpath de celda como número entero

+3

¿Usted intentó el *** indexPathForCell: ** * método? – EmptyStack

Respuesta

49

Aquí es el método en la clase UITableView:

Objective-C

- (NSArray *)indexPathsForVisibleRows 

Swift

public var indexPathsForVisibleRows: [NSIndexPath]? { get } 
+1

Esta parece ser una mejor respuesta a menos que esté equivocado. –

+1

@Ramis Esto está bien a menos que esté usando las filas visibles indexpath para agregar y eliminar filas, lo que hace que las filas se agreguen o eliminen en el índice incorrecto. –

+0

@AshishPisey La pregunta era sobre filas visibles y la respuesta es sobre filas visibles. – Ramis

9

UITableView tiene un método para encontrar la indexPath de una célula:

- (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell 

Sólo iterar sobre la matriz de células visible y pasar cada célula para obtener la ruta de índice.

for (UITableViewCell *cell in arrayOfVisibleTVC) { 
    NSIndexPath *path = [[BNUtilitiesQuick ListController].tableViewA indexPathForCell:cell]; 
    NSLog(@"%@", path); 
} 
+2

Forma de codificar mucho para algo que puede ser mucho más fácil, ver la respuesta de Ramis –

Cuestiones relacionadas