2013-08-25 12 views
28

Używam pakietu IAD ze storyboardów z Apple, jak na ten link ... Apple iAd Storyboard documentationautoLayout i subviews

To wszystko działa dobrze, dopóki nie skręcić autolayout dalej. Działa dobrze, ale zawiesza się podczas działania. Wyjście pojawia się:

24.08.2013 12: 06: 36.138 TabbedBanner [7272: c07] * błąd potwierdzenia w - [UIView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2380.17/UIView.m : 5781 24.08.2013 12: 06: 36,139 TabbedBanner [7272: c07] * zakończenie aplikację spowodowane nieprzechwyconego wyjątku 'NSInternalInconsistencyException', powód: „Auto Layout nadal wymagane po wysłaniu -viewDidLayoutSubviews do kontrolera widoku. Implementacja BannerViewController musi wysłać -layoutSubviews do widoku, aby wywołać automatyczny układ. " *** Pierwszy rzut wywołanie stosu: (0x1e27012 0x110ee7e 0x1e26e78 0xba4665 0xa347a 0x11226b0 0x1358fc0 0x134d33c 0x1358eaf 0x1422bd 0x8ab56 0x8966f 0x89589 0x887e4 0x883ef 0x65c9d 0x5098b 0x5194b 0x62cb5 0x63beb 0x55698 0x1700df9 0x1700ad0 0x1d9cbf5 0x1d9c962 0x1dcdbb6 0x1dccf44 0x1dcce1b 0x5117a 0x52ffc 0x2a0d 0x2935) libC++ ABI. dylib: kończy się nazywanie wyrzuceniem wyjątku (lldb)

Wiem, że jest to coś wspólnego z subviewsami w scenorysie, ale nie wiem, jak poprawić ten błąd. Jestem całkiem nowym użytkownikiem iOS i próbuję uczyć się, więc każda pomoc jest doceniana. Dziękujemy

Odpowiedz

88

Dodaj:

[self.view layoutIfNeeded]; 

do końca tej metody

- (void)viewDidLayoutSubviews 

wewnątrz firmy BannerViewController

+15

rozważyć użycie '[self.view layoutIfNeeded]' zamiast 'layoutSubviews '(co, zgodnie z dokumentami, nie powinno być wywoływane bezpośrednio). To powinno rozwiązać problem konieczności zmiany układu. – orip

+3

Jaki jest powód konieczności wywoływania układu, jeśli jest to konieczne? Czy to dlatego, że subviews nie są konfigurowane do momentu wywołania metody viewDidLayoutSubviews? – coolio

+4

Zdarza mi się tylko w systemie iOS 7, gdy używam Xcode 6 do projektowania aplikacji na iOS 8 i 7, i nadpisuję viewDidLayoutSubviews. Wiem, że niektóre rzeczy zmieniły się w kolejności cyklu życia widoku na iOS 8, ale dzieje się tak tylko podczas korzystania z aplikacji iOS 8 SDK lub iOS 7 ... System iOS 7 nie jest w stanie poprawnie wyświetlić widoków na końcu pierwszego „viewDidLayoutSubviews” wezwanie i trzeba je ponownie po modyfikacji układ rzeczy w overrided metody – dulgan

Powiązane problemy