2010-04-20 11 views
10

Jak mogę uzyskać prostokątny rozmiar UITableViewCell?Jak uzyskać prostokątny rozmiar UITableViewCell?

Próbuję wyświetlić zawisu pop każdym razem, gdy użytkownik kliknie na komórce, a chcieliby dymek pop do wyświetlane centralnie każdej komórce:

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

Odpowiedz

38

Gdyby to zrobić w ostatnim czasie. Musisz użyć [tableView rectForRowAtIndexPath].

Jedną z rzeczy, która może cię złapać, jest to, że podczas przewijania UITableView musisz wziąć pod uwagę przesunięcie (tzn. Coś, co zgłasza swoją pozycję y, ponieważ 3000 pikseli oznacza oczywiście 3000 od góry UITableView - nie 3000 pikseli na ekranie).

Oprócz tego będzie on naturalnie pojawiał się na górze komórki, więc do obliczeń należy dodać połowę wysokości komórki.

Ten kod działa dobrze dla mnie:

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) 

W moim przypadku każda komórka była 90 pikseli wysokości, stąd '+45' bit. Zastąp połowę swojej własnej wysokości komórki.

+0

To świetne rozwiązanie! –

+0

To było bardzo pomocne. Pocierałem niewłaściwy, łamałem głowę z wysokością [[tableView cellForRowAtIndexPath: indexPath] height] - Twoje rozwiązanie było tym, czego naprawdę potrzebuję. Wielkie dzięki! – Veeru

Powiązane problemy