Pregunta Obtener posición de celda en UITableview


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)?


31
2017-07-08 11:47


origen


Respuestas:


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

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

NSArray *visibleCellsList=[tableview visibleCells];

for (UITableViewCell* currentCell in visibleCellsList) {

    NSLog(@"cell : %@ \n\n",currentCell.textLabel.text);

}

10
2017-07-08 11:56



Para obtener el puesto de 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);

178
2017-09-19 15:49



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.


0
2017-07-08 12:10