遇到崩溃无法在ios中添加self作为子视图

前端之家收集整理的这篇文章主要介绍了遇到崩溃无法在ios中添加self作为子视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
崩溃后无法重现.

我已经处理了这个案例:当一个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.

猜你在找的iOS相关文章