2013-08-25 30 views
28

Tôi đang sử dụng bộ ứng dụng iAd với storyboards từ Apple, theo liên kết này ... Apple iAd Storyboard documentationAutolayout và subviews

Tất cả đều hoạt động tốt cho đến khi tôi quay autolayout trên. Nó xây dựng tốt nhưng treo trên chạy. Kết quả tôi nhận được là:

2013-08-24 12: 06: 36,138 TabbedBanner [7272: C07] * thất bại Assertion trong - [UIView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2380.17/UIView.m : 5781 2013-08-24 12: 06: 36.139 TabbedBanner [7272: c07] * Chấm dứt ứng dụng do ngoại lệ chưa được nhận 'NSInternalInconsistencyException', lý do: 'Bố cục tự động vẫn được yêu cầu sau khi gửi -viewDidLayoutSubviews tới bộ điều khiển chế độ xem. Triển khai của BannerViewController cần gửi -layoutSubviews đến chế độ xem để gọi bố cục tự động. ' *** Đầu tiên gọi ném stack: (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: chấm dứt được gọi là ném một ngoại lệ (lldb)

Tôi biết nó là một cái gì đó để làm với các subviews trong storyboard nhưng tôi không biết làm thế nào để sửa lỗi này. Tôi khá mới với iOS và cố gắng tự dạy mình nên mọi sự giúp đỡ đều được đánh giá cao. Cảm ơn nhiều

Trả lời

88

Add:

[self.view layoutIfNeeded]; 

đến cuối của phương pháp này

- (void)viewDidLayoutSubviews 

bên trong của bạn BannerViewController

+15

Xem xét sử dụng '[self.view layoutIfNeeded]' thay vì 'layoutSubviews '(mà, theo các tài liệu, không nên được gọi trực tiếp). Điều này vẫn nên giải quyết vấn đề cần phải bố trí lại. – orip

+3

Lý do đằng sau việc cần gọi bố cục là gì nếu cần? Có phải vì các bản xem trước không được thiết lập cho đến khi viewDidLayoutSubviews được gọi không? – coolio

+4

Nó chỉ xảy ra với tôi trên iOS 7 khi sử dụng Xcode 6 để thiết kế ứng dụng cho iOS 8 và 7 và ghi đè viewDidLayoutSubviews. Tôi biết một số điều thay đổi theo thứ tự của vòng đời xem trên iOS 8 nhưng điều này chỉ xảy ra với tôi khi sử dụng ứng dụng iOS 8 SDK hoặc iOS 7 ... iOS 7 không thể bố cục chế độ xem chính xác ở cuối đầu tiên "viewDidLayoutSubviews" gọi và bạn phải bố trí lại chúng sau khi sửa đổi mọi thứ theo phương pháp ghi đè – dulgan

Các vấn đề liên quan