崩溃后无法重现。
我已经处理过这样的情况:当一个viewcontroller动画时,不会对viewcontroller进行segue。此处提到的类似问题:iOS app error - Can't add self as subview。我已经实施了this安全隔离解决方案。
我仍然在跟踪崩溃。
注意:在iOS 7和8上都会崩溃,但iOS 8会出现更多崩溃。(如果这有帮助)。即使从viewDidLoad中删除,也不会在模拟器中崩溃。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview'
Application Specific Backtrace 1:
0 CoreFoundation 0x24503f87 <redacted> + 126
1 libobjc.A.dylib 0x31c62c77 _objc_exception_throw + 38
2 CoreFoundation 0x24503ecd -[NSException initWithCoder:] + 0
3 UIKit 0x279880b3 -[UIView _addSubview:positioned:relativeTo:] + 114
4 UIKit 0x27988037 -[UIView addSubview:] + 30
5 UIKit 0x27b4d491 <redacted> + 1236
6 UIKit 0x2798e701 +[UIView performWithoutAnimation:] + 72
7 UIKit 0x27b4cd79 -[_UINavigationParallaxTransition animateTransition:] + 808
8 UIKit 0x27b0b787 -[UINavigationController _startCustomTransition:] + 2854
9 UIKit 0x27a2ab2f -[UINavigationController _startDeferredTransitionIfNeeded:] + 422
10 UIKit 0x27a2a931 -[UINavigationController __viewWillLayoutSubviews] + 44
11 UIKit 0x27a2a8c9 -[UILayoutContainerView layoutSubviews] + 184
12 UIKit 0x2797f25f -[UIView layoutSublayersOfLayer:] + 514
13 QuartzCore 0x273aa1d5 -[CALayer layoutSublayers] + 136
14 QuartzCore 0x273a5bd1 <redacted> + 360
15 QuartzCore 0x273a5a59 <redacted> + 16
16 QuartzCore 0x273a5447 <redacted> + 222
17 QuartzCore 0x273a5251 <redacted> + 324
18 UIKit 0x27980c31 <redacted> + 1384
19 CoreFoundation 0x244ca807 <redacted> + 14
20 CoreFoundation 0x244c9c1b <redacted> + 222
21 CoreFoundation 0x244c8299 <redacted> + 768
22 CoreFoundation 0x24415db1 _CFRunLoopRunSpecific + 476
23 CoreFoundation 0x24415bc3 _CFRunLoopRunInMode + 106
24 GraphicsServices 0x2b7a0051 _GSEventRunModal + 136
25 UIKit 0x279e0f01 _UIApplicationMain + 1440
答案 0 :(得分:1)
很抱歉这次聚会迟到了。我最近有这个问题,我的导航栏因为同时推送多个视图控制器而进入损坏状态。发生这种情况是因为在第一个视图控制器仍处于动画状态时按下了另一个视图控制器。从here
的非常用答案中提示我想出了一个适用于我的简单解决方案。您只需要子类UINavigationController
并覆盖pushViewController方法并检查以前的视图控制器动画是否已完成。您可以通过将您的班级设为UINavigationControllerDelegate
的代表并将代理设置为self
来听取动画完成情况。
我上传了一个要点here,以简化操作。
请确保将此新类设置为故事板中的NavigationController。