2010-04-20 11 views
10

Wie bekomme ich die richtige Größe einer UITableViewCell?Wie bekomme ich die richtige Größe von UITableViewCell?

Ich versuche, ein Pop schweben auf einer Zelle klickt der Benutzer jedes Mal angezeigt werden, und möchte die Pop schweben auf jeder Zelle zentriert erscheinen:

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

Antwort

38

Wäre dies vor kurzem zu tun. Sie müssen [tableView rectForRowAtIndexPath] verwenden.

Eines der Dinge, die Sie auffangen können, ist, dass Sie beim Scrollen durch die UITableView berücksichtigen müssen, dass der Offset (dh etwas, das seine y-Position als 3000 Pixel angibt, bedeutet natürlich 3000 von oben die UITableView - nicht 3000 Pixel auf dem Bildschirm).

Darüber hinaus wird es natürlich an der Spitze der Zelle angezeigt, so dass Sie die Hälfte der Höhe der Zelle zu den Berechnungen hinzufügen müssen.

Dieser Code funktioniert gut für mich:

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) 

In meinem Fall jede Zelle war 90 Pixel hoch, daher der '+45' Bit. Ersetzen Sie die Hälfte Ihrer eigenen Zellenhöhe.

+0

Dies ist eine großartige Lösung! –

+0

Das war sehr hilfreich. Ich rieb den falschen, ich knackte meinen Kopf mit [[tableView cellForRowAtIndexPath: indexPath] Höhe] - Ihre Lösung war, was ich eigentlich brauche. Vielen Dank! – Veeru

Verwandte Themen