2015-02-11 9 views
5

Gdy masz UITableView wewnątrz kontrolera UIViewController, musisz wyłączyć flagę AutomaticAdjustsScrollViewInsets (w edytorze kodów lub scenorysów), aby uzyskać górną przestrzeń, aby nie ominąć górnego paska. Mam teraz UIViewController dziecko przy użyciu "osadzić" seque wewnątrz widoku podrzędnego, który zawiera UITableView. Widzę "przestrzeń" (żółty obszar), ale wyczyściłem wszystkie flagi we wbudowanym UIViewController i nawet wyczyściłem flagę ręcznie w prepareForSeque, ale przestrzeń pozostaje. Czy jest coś jeszcze, co trzeba zrobić, czy jest to błąd?automaticAdjustsScrollViewInsets nie działa w osadzonym elemencie UITableViewController z UITableView

enter image description here

+0

Ten żółty obszar jest częścią osadzonego VC lub rodzica VC? – orkenstein

+0

Osadzone, to jest puste miejsce u góry widoku tabeli. – ahwulf

+0

Co to jest ramka widoku tabeli? Sprawdź to w 'viewDidAppear'. – orkenstein

Odpowiedz

6

Gdyby ten problem dziś rano.

Okazuje się, trzeba odznaczyć automaticallyAdjustsScrollViewInsets nieruchomość od parentViewController zamiast dziecka podczas korzystania z trybu widoku wbudowanego kontrolera jak ty.

Oto moja konstrukcja UI:

ParentViewController ma widok kontenera, które wskazują na ChildViewController (podklasa UITableViewController).

Odznacz automaticallyAdjustsScrollViewInsets w ChildViewController: nie pracują

Odznacz automaticallyAdjustsScrollViewInsets w ParentViewController: prace!

0

Długo walczyłem z tym do godziny, aż zdałem sobie sprawę, że odpowiedź @ user3188985 była, co się dzieje, ale rozwiązanie nie działa dla mnie.

Jest tak dlatego, że mam dwa kontrolery widoku, które zawierają scrollViews i chcę je dopasować, a jedno nie, co zrobić?


Jeśli wyłączysz automatyczne dostosowanie w kontrolerze nadrzędnym, musisz ręcznie dostosować jeden potrzebny scrollView, np. ustawienie contentInset w odpowiednich przypadkach.


Jeśli zostawisz na automatycznej regulacji w nadrzędnej, I odkryli, że manekina Scrollview, z zerowym ramy, ukryta, wszystkie właściwości przewijania ustawiona na NIE, a jeśli jest, zanim widoczny/włączony Scrollview w hierarchia widoku kontrolera widoku podrzędnego, a następnie otrzyma automatyczne dostosowanie i pozostawi twój widoczny widok scrollView sam.

Alternatywnie możesz po prostu ustawić najbardziej widoczny widok kontrolera widoku jako przewijany widok z przewijaniem wyłączonym i mieć włączony inny scrollView z włączonym przewijaniem, co pozwoli osiągnąć to samo, co podejście "fałszywe".


Co można zobaczyć tutaj, jest to, że flaga automatycznej regulacji z jedynego rodzica widoku kontrolera jest brane pod uwagę, ale to własna hierarchia widok kontroler jest przesuwany znaleźć scrollViews do regulacji zawartej w każdym kontrolerze. Jest to po prostu niechciane zachowanie UIKit.Byłoby dobrze, gdyby ustawienie automatycznej regulacji każdego kontrolera podrzędnego zostało sprawdzone przed podjęciem decyzji o pomieszaniu z nim:/

Powiązane problemy