2011-11-11 11 views
6

Mam problem z przesłonięciem metody GetHeight podczas tworzenia aplikacji na iPada przy użyciu MonoTouch.Dialog. Wdrażam IElementSizing, ale moja metoda GetHeight nigdy nie zostanie wywołana.Okno dialogowe MonoTouch StringElements Zmienna wysokość komórki

Czy ktoś inny wpadł na ten problem? Dzięki.

Upewniłem się, że mój root.UnevenRows = true;

Próbowałem również uwzględnienie projektu okna dialogowego i umieszczenie punktu przerwania w GetHeight() dla dowolnego elementu, który implementuje IElementSizing bez powodzenia. W poprzednim projekcie na iPhone'a działało to dobrze, ale na iPadzie wciąż tkwię. Czy są jeszcze jakieś "gace", których mogłabym zagubić?

Odpowiedz

10

To jest rodzaj błędu w MonoTouch.Dialog. Zasadniczo, kiedy przypisujesz element główny, chce on wiedzieć, czy istnieją nierówne wiersze, aby mógł utworzyć i buforować odpowiedni obiekt UITableViewSource.

Jednakże, jeśli dodasz sekcje z elementami, które implementują IElementSizing do elementu głównego po utworzeniu obiektu źródłowego. Wtedy nie zadzwoni do nadpisania GetHeight. Przykładem tego może być pobranie asynchronizacji danych i wywołania zwrotnego oraz dodanie wynikowych sekcji/elementów do elementu RootElement ... lub zasadniczo w dowolnym momencie dodania sekcji/elementów po wywołaniu metody PrepareRoot().

Istnieje proste obejście tego:

this.Root.UnevenRows = true; 

Nie patrząc na kodzie, jednak nie mogę powiedzieć, czy jest to bug widzisz.