2010-08-03 12 views
8

Also, ich habe dieses UITableView. Es ist in einer iPad-Anwendung. Einige der Zellen haben einen Zubehörknopf auf der rechten Seite (der kleine runde Pfeil). Wenn das gedrückt wird, präsentiere ich eine Popover-Ansicht, in der der Benutzer Aktionen auswählen kann, die sich auf die von ihnen berührte Tabellenzelle beziehen. Bisher ist nichts davon schwierig oder außergewöhnlich.Erhalten Sie Bildschirmkoordinaten eines bestimmten UITableViewCell?

Aber die Popover-Ansicht möchte wissen woher sie kommt, damit sie den kleinen Pfeil dorthin zeichnen kann. Ich möchte natürlich, dass dieser Pfeil auf die Zelle zeigt, auf die sich das Popover bezieht.

Wie kann ich die aktuellen Bildschirmkoordinaten für eine bestimmte Zelle in einer Tabelle herausfinden, vorausgesetzt, ich weiß, dass es indexPath ist?

Antwort

28

Verwenden Sie die UITableView-Methode -rectForRowAtIndexPath:. Beachten Sie, dass ein Rect im Koordinatensystem der Tabellenansicht zurückgegeben wird. Verwenden Sie die UIView-Methode -convertRect:fromView:, wenn Sie die reelle Beziehung zu einer anderen Ansicht innerhalb desselben Fensters benötigen.

+4

Mein Gott, es ist so einfach! Ich muss an den falschen Stellen gesucht haben. –

+1

Vorsicht mit diesem, wenn die UITableCell aus dem Bildschirm unten ist, wird es Ihnen die y-Koordinate dafür in der Tabellenansicht nicht die tatsächlichen Bildschirmkoordinaten geben. Ansonsten funktioniert diese Methode super! – TChadwick

+0

Diese Methode gibt Ihnen nur den Offset von der Scrollview, die Tabellenansicht enthält. Sie erhalten also die richtige Größe, aber wenn Ihre TableView nicht oben in Ihrer Ansicht angezeigt wird, wird dies nicht berechnet. Ereignis wenn Sie nach unten scrollen, wird diese Methode das nicht respektieren. –

Verwandte Themen