2010-04-20 26 views
10

¿Cómo puedo obtener el tamaño correcto de una UITableViewCell?¿Cómo obtener el tamaño rect de UITableViewCell?

estoy tratando de mostrar un vuelo estacionario emergente cada vez que el usuario hace clic en una celda, y me gustaría el cursor del pop al aparezcan centradas en cada célula:

[replyPopover presentPopoverFromRect:CGRectMake(77, 25, 408, 68) 
           inView:self.view 
      permittedArrowDirections:UIPopoverArrowDirectionDown 
          animated:YES]; 

Respuesta

38

tenido que hacer esto recientemente. Necesita usar [tableView rectForRowAtIndexPath].

Sin embargo, una de las cosas que puede atrapar es que a medida que se desplaza por UITableView debe tener en cuenta el desplazamiento (es decir, algo que informe su posición y como 3000 píxeles significa 3000 desde la parte superior UITableView: no 3000 píxeles en la pantalla).

Además de esto, aparecerá naturalmente en la parte superior de la celda, por lo que debe agregar la mitad de la altura de la celda a los cálculos.

Este código ha funcionado bien para mí:

CGRect frame = [tableView rectForRowAtIndexPath:indexPath]; 
CGPoint yOffset = self.tableView.contentOffset; 
[self.popoverController presentPopoverFromRect:CGRectMake(frame.origin.x, (frame.origin.y + 45 - yOffset.y), frame.size.width, frame.size.height) 

En mi caso cada celda fue de 90 píxeles de alto, de ahí el '45' bits. Sustituye la mitad de tu propia altura de celda.

+0

¡Esta es una gran solución! –

+0

Eso fue muy útil. Estaba frotando el equivocado, me estaba rompiendo la cabeza con [[tableView cellForRowAtIndexPath: indexPath] height] - Su solución era lo que realmente necesito. ¡Gracias un montón! – Veeru

Cuestiones relacionadas