Getting a crash cannot add itself as a subview in ios

Unable to reproduce the next failure.

I already handled this case: do not redo the viewcontroller until one animation animator. . A similar problem mentioned here: iOS application error - cannot add itself as a sub . I have implemented this solution for safe segueing.

However, I get the following crashes.

Note: getting a crash on iOS 7 and 8, but more cases of crashing for iOS 8. (if that helps). Do not get a crash in the simulator even if you exit 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 
+7
ios objective-c iphone
source share
2 answers

Sorry for being late to the party. I recently had this problem when my navigation bar goes into a damaged state due to the simultaneous pressing of several controllers. This is because another view controller is pressed while the first view controller is still animating. Taking a hint from a non-authentic answer from here

I came up with my simple solution that works in my case. You just need to subclass the UINavigationController and override the pushViewController method and check if the previous controller animation has completed. You can listen to the completion of the animation by making your class a delegate to UINavigationControllerDelegate and setting the delegate to self .

I downloaded gist here to make things simple.

Just make sure you set this new class as the NavigationController in your storyboard.

+1
source share

This also happens when for some reason you press segue / viewcontroller several times. One of such cases is when you are observing a notification, and if for some reason this notification has been published several times and in the monitoring method, if you press the view controller, it will push more than once, which ultimately leads to this kind accident.

+1
source share

All Articles