uitableviewcontroller uitableviewcell example iphone uitableview

iphone - uitableviewcell - Obtener posición de celda en UITableview



uitableviewcontroller (3)

Estoy tratando de obtener la posición de la celda en TableView. de este código estoy obteniendo posición de celda

int numberOfSections = [UITableView numberOfSections]; int numberOfRows = 0; NSIndexPath *tempIndexPath = nil; UITableViewCell *tempCell = nil; for(int i=0;i<numberOfSections;i++) { numberOfRows = [UITableView numberOfRowsInSection:i]; for(int j=0;j<numberOfRows;j++ { tempIndexPath = [NSIndexPath indexPathForRow:j inSection:i]; tempCell = [UITableView cellForRowAtIndexPath:tempIndexPath]; NSLog("Y postion for cell at (Row = %d,Section = %d) is :%f",tempCell.frame.origin.y); } }

está calculando los ejes y de la celda en la tabla vista, pero mi problema es que quiero obtener la posición de la celda en el área visible de la tabla vista rect. es decir, si la vista de tabla tiene el tamaño cgrectmake (0,0,200,500) y la altura de la celda es de 100 píxeles. entonces tableview mostrará 5 filas. si me desplazo hacia abajo y selecciono la 7ma fila. obtendré sus ejes y 700. pero la celda estará dentro del marco (0,0,200,500). ¿Cómo puedo obtener la ubicación de la celda dentro de este marco (0,0,200,500)?


Lo hice así:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

Eso fue todo lo que tuve que hacer, que todo lo que pude cell.frame , cell.bounds , etc.


Para obtener la posición de una UITableViewCell relativa a la vista en la que se encuentra (por ejemplo, en relación con su área visible):

Swift 3, Swift 4:

let rectOfCellInTableView = tableView.rectForRow(at: indexPath) let rectOfCellInSuperview = tableView.convert(rectOfCellInTableView, to: tableView.superview) print("Y of Cell is: /(rectOfCellInSuperview.origin.y)")

Swift 2:

let rectOfCellInTableView = tableView.rectForRowAtIndexPath(indexPath) let rectOfCellInSuperview = tableView.convertRect(rectOfCellInTableView, toView: tableView.superview) print("Y of Cell is: /(rectOfCellInSuperview.origin.y)")

C objetivo:

CGRect rectOfCellInTableView = [tableView rectForRowAtIndexPath: indexPath]; CGRect rectOfCellInSuperview = [tableView convertRect: rectOfCellInTableView toView: tableView.superview]; NSLog(@"Y of Cell is: %f", rectOfCellInSuperview.origin.y);


NOTA : Espero que la pregunta se haya actualizado nuevamente, use las otras respuestas que correspondan.

Puede usar el método visibleCells que devolverá las celdas actualmente visibles en su tabla vista:

NSArray *visibleCellsList=[tableview visibleCells]; for (UITableViewCell* currentCell in visibleCellsList) { NSLog(@"cell : %@ /n/n",currentCell.textLabel.text); }