Moja aplikacja uruchamia się z menu głównym, które jest niestandardową podklasą o nazwie UIViewController
o nazwie LVSMainViewController
. Jest on osadzony w UINavigationController
, który jest ustawiony jako początkowe VC w storyboardie. LVSMainViewController
implementuje -viewDidLayoutSubviews
."Automatyczne układanie nadal wymagane ..." powoduje awarię po powrocie do głównego kontrolera widoku.
Naciśnięcie przycisku przenosi użytkownika do innej sekcji aplikacji (innego VC). Użytkownik powraca do głównego menu za pomocą przycisku podłączonego do przełącznika push. Ale gdy aplikacja ładuje menu główne VC znowu, to wywala z komunikatem:
2014-08-28 16: 11: 14,122 * błąd potwierdzenia w - [UIView layoutSublayersOfLayer:]/SourceCache/UIKit_Sim/UIKit -2935.137/UIView.m: 8803
2014-08-28 16: 11: 14.257 * Zakończenie aplikacji z powodu nieprzechwyconego wyjątku "NSInternalInconsistencyException", powód: "Auto Layout nadal wymagany po wysłaniu -viewDidLayoutSubviews do kontrolera widoku. Implementacja LVSMainViewController musi wysłać -layoutSubviews do widoku, aby uruchomić automatyczny układ. "
Inne posty na SO zgłosić ten sam błąd przy ustalaniu ograniczeń automatycznego układu programowo (nie robię, że choć używam auto-układ w serii ujęć) i/lub przy użyciu UITableView
(co nie jestem używając albo głównego menu VC, albo VC, do którego się przyłączy, chociaż używam go w innym miejscu w aplikacji). (Patrz here lub here.)
Pozostałe elementy układanki:
Próbowałem, dodając
[self.view layoutSubviews];
na koniec-viewDidLayoutSubviews
. To się nie psuje, kiedy to robię. Ale wydaje się nierozsądne, ponieważ Apple's documentation mówiNie należy bezpośrednio wywoływać tej metody. Jeśli chcesz wymusić aktualizację układu , wywołaj metodę setNeedsLayout zamiast tego przed numerem do kolejnej aktualizacji rysunku.
Gdybym zamiast dodawać
[self.view setNeedsLayout];
pod koniec-viewDidLayoutSubviews
, awarii aplikacji z nim najpierw ładuje menu głównego VC, kiedy nie zostawić go i powrotu.
Co może być przyczyną?
Jaki jest kod na swojej 'viewDidLayoutSubviews'? – fluidsonic
@fluidsonic Właśnie się sprawdziłem i teraz działa poprawnie pod XCode 6.0.1. Zakładam, że był to błąd we wcześniejszych wersjach. – grendelsdad