2010-04-20 34 views
10

Come posso ottenere la dimensione corretta di UITableViewCell?Come ottenere la dimensione corretta di UITableViewCell?

Sto cercando di visualizzare un hover comparsa ogni volta che l'utente fa clic su una cella, e vorrebbe il passaggio del mouse pop ad apparire centrata sulla ogni cellula:

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

risposta

38

dovuto farlo di recente. Devi usare [tableView rectForRowAtIndexPath].

Tuttavia, una delle cose che possono catturarti è che mentre scorri UITableView devi tener conto dell'offset (cioè qualcosa che riporta la sua posizione di 3000 pixel significa naturalmente 3000 dalla cima di UITableView - non 3000 pixel sullo schermo).

In aggiunta a questo, apparirà naturalmente nella parte superiore della cella, quindi è necessario aggiungere metà dell'altezza della cella ai calcoli.

Questo codice ha funzionato bene per me:

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) 

Nel mio caso ogni cella era alta 90 pixel, da qui il '45' bit. Sostituisci metà dell'altezza della tua cella.

+0

Questa è un'ottima soluzione! –

+0

Questo è stato molto utile. Stavo sfregando quello sbagliato, stavo rompendo la testa con [[tableView cellForRowAtIndexPath: indexPath] height] - La tua soluzione era ciò di cui avevo effettivamente bisogno. Grazie mille! – Veeru

Problemi correlati