2014-12-22 7 views
5

Wiem, że kluczem jest tutaj convertRect:toRect, ale nie jestem pewien jak to nazwać. Mam podgląd mojej komórki i chcę jej pozycję w całym oknie aplikacji.Jak uzyskać pozycję subview w moim UITableViewCell w odniesieniu do całego okna?

Muszę o tym wiedzieć, gdy dotknę tego przycisku (podglądu) w metodzie akcji docelowej. Muszę zadzwonić do funkcji convertRect:toRect na komórce, jak sądzę, w celu uzyskania właściwych współrzędnych, ale w tej metodzie nie mam odniesienia do samej komórki.

Czy mogę wspiąć się na hierarchię widoków? Wydaje się to obrzydliwe, ponieważ nie jestem całkowicie pewien, co dostanę, ponieważ jest osadzony w contentView komórki, a Apple robi zwariowane rzeczy z ich prywatnymi subviewsami i cokolwiek.

Kod:

@IBAction buttonPressed(sender: UIButton) { 
    // This button got the callback that it was pressed. It's in a cell. I need to convert its rect to that of the window here. I need the coordinate system it's calculated from (the cell) which I'm not sure of how to easily do in a target action callback. 
} 
+0

możliwy duplikat [iPhone - Uzyskaj pozycję UIView w całym UIWindow] (http://stackoverflow.com/questions/1465394/iphone-get-position-of-uiview-within-entire-uiwindow) –

+0

@LyndseyScott Nie , jest to szczególny przypadek w kontekście podrodzin komórki, gdzie nie jest łatwo uzyskać referencyjny widok widoku. –

+1

Dlaczego tak uważasz? –

Odpowiedz

7

To rzeczywiście bardzo proste:

CGRect windowRect = [someSubview convertRect:someSubview.bounds toView:nil]; 

Zakładając masz obsługi przycisku:

- (void)someButtonHandler:(id)sender { 
    UIButton *button = sender; 

    // do your stuff 

    CGRect windowRect = [button convertRect:button.bounds toView:nil]; 
} 

Oczywiście jest to jeszcze łatwiejsze, jeśli metoda jest ustawiony jako :

- (void)someButtonHandler:(UIButton *)button { 
} 
+0

Jak uzyskać "someSubview" w tym przypadku opisane w pytaniu? –

+0

To zależy od ciebie. Twoje pytanie brzmi, jakbyś już miał wydział. Jeśli nie, wyjaśnij swoje pytanie, ponieważ nie jest jasne, co masz. – rmaddy

+0

Mam subview i myślałem, że pytanie stało się jasne. Wywiad znajduje się w komórce.Wywołanie kodu 'convertRect' na podglądzie nie przedstawia poprawnego wyniku, ponieważ jego układ współrzędnych jest pod względem komórki, w której się znajduje. –

Powiązane problemy