崩溃后无法重现.
我已经处理了这个案例:当一个viewcontroller动画时,不会对viewcontroller进行segueing.这里提到类似的问题: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
解决方法
抱歉迟到了.我最近有这个问题,我的导航栏因为同时推送多个视图控制器而进入损坏状态.发生这种情况是因为在第一个视图控制器仍在动画时按下另一个视图控制器.从
here的非常规答案中得到暗示
我提出了我的简单解决方案,适用于我的情况.您只需要子类UINavigationController并覆盖pushViewController方法并检查以前的视图控制器动画是否已完成.您可以通过使您的类成为UINavigationControllerDelegate的委托并将委托设置为self来监听动画完成.
我上传了一个要点here来简化.
只需确保将此新类设置为故事板中的NavigationController.