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

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

我已经处理了这个案例:当一个viewcontroller动画时,不会对viewcontroller进行segueing.这里提到类似的问题:iOS app error – Can’t add self as subview.我已经实施了this安全隔离解决方案.

我仍然在跟踪崩溃.

注意:在iOS 7和8上都会崩溃,但iOS 8会出现更多崩溃.(如果这有帮助).即使从viewDidLoad中删除,也不会在模拟器中崩溃.

  1. *** Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: 'Can't add self as subview'
  2.  
  3. Application Specific Backtrace 1:
  4. 0 CoreFoundation 0x24503f87 <redacted> + 126
  5. 1 libobjc.A.dylib 0x31c62c77 _objc_exception_throw + 38
  6. 2 CoreFoundation 0x24503ecd -[NSException initWithCoder:] + 0
  7. 3 UIKit 0x279880b3 -[UIView _addSubview:positioned:relativeTo:] + 114
  8. 4 UIKit 0x27988037 -[UIView addSubview:] + 30
  9. 5 UIKit 0x27b4d491 <redacted> + 1236
  10. 6 UIKit 0x2798e701 +[UIView performWithoutAnimation:] + 72
  11. 7 UIKit 0x27b4cd79 -[_UINavigationParallaxTransition animateTransition:] + 808
  12. 8 UIKit 0x27b0b787 -[UINavigationController _startCustomTransition:] + 2854
  13. 9 UIKit 0x27a2ab2f -[UINavigationController _startDeferredTransitionIfNeeded:] + 422
  14. 10 UIKit 0x27a2a931 -[UINavigationController __viewWillLayoutSubviews] + 44
  15. 11 UIKit 0x27a2a8c9 -[UILayoutContainerView layoutSubviews] + 184
  16. 12 UIKit 0x2797f25f -[UIView layoutSublayersOfLayer:] + 514
  17. 13 QuartzCore 0x273aa1d5 -[CALayer layoutSublayers] + 136
  18. 14 QuartzCore 0x273a5bd1 <redacted> + 360
  19. 15 QuartzCore 0x273a5a59 <redacted> + 16
  20. 16 QuartzCore 0x273a5447 <redacted> + 222
  21. 17 QuartzCore 0x273a5251 <redacted> + 324
  22. 18 UIKit 0x27980c31 <redacted> + 1384
  23. 19 CoreFoundation 0x244ca807 <redacted> + 14
  24. 20 CoreFoundation 0x244c9c1b <redacted> + 222
  25. 21 CoreFoundation 0x244c8299 <redacted> + 768
  26. 22 CoreFoundation 0x24415db1 _CFRunLoopRunSpecific + 476
  27. 23 CoreFoundation 0x24415bc3 _CFRunLoopRunInMode + 106
  28. 24 GraphicsServices 0x2b7a0051 _GSEventRunModal + 136
  29. 25 UIKit 0x279e0f01 _UIApplicationMain + 1440

解决方法

抱歉迟到了.我最近有这个问题,我的导航栏因为同时推送多个视图控制器而进入损坏状态.发生这种情况是因为在第一个视图控制器仍在动画时按下另一个视图控制器.从 here的非常规答案中得到暗示

我提出了我的简单解决方案,适用于我的情况.您只需要子类UINavigationController并覆盖pushViewController方法并检查以前的视图控制器动画是否已完成.您可以通过使您的类成为UINavigationControllerDelegate的委托并将委托设置为self来监听动画完成.

上传了一个要点here来简化.

只需确保将此新类设置为故事板中的NavigationController.

猜你在找的iOS相关文章