Reputation: 783
I'm seeing a weird crash when I call [self.navigationController popViewControllerAnimated:YES];
in a delegate callback after selecting an item from a table view. No trace is printed to the console in Xcode - but this is the stack available in the system Console - any ideas?
Thread 0:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x94f5e332 __kill + 10
1 libsystem_kernel.dylib 0x94f5d932 kill$UNIX2003 + 32
2 CoreFoundation 0x01c9876b CFHash + 43
3 CoreFoundation 0x01c8f8b4 __CFDictionaryStandardHashKey + 36
4 CoreFoundation 0x01cbce9c CFBasicHashRemoveValue + 1148
5 CoreFoundation 0x01cca669 CFDictionaryRemoveValue + 185
6 Foundation 0x011a3162 -[NSISEngine setIntegralizationAdjustment:forMarker:] + 50
7 Foundation 0x011a97ec -[NSISEngine removeConstraintWithMarker:] + 651
8 Foundation 0x011b388e -[NSLayoutConstraint _removeFromEngine:] + 277
9 UIKit 0x00a80d36 -[UIView(UIConstraintBasedLayout) _layoutEngine_willRemoveLayoutConstraint:] + 64
10 UIKit 0x005ac2ae __48-[UIScrollView _setAutomaticContentConstraints:]_block_invoke_0 + 181
11 Foundation 0x011a8733 -[NSISEngine withAutomaticOptimizationDisabled:] + 57
12 UIKit 0x00a80a5c -[UIView(UIConstraintBasedLayout) _withAutomaticEngineOptimizationDisabled:] + 63
13 UIKit 0x005ac1bb -[UIScrollView _setAutomaticContentConstraints:] + 122
14 UIKit 0x005ac9ca -[UIScrollView _rememberDependentConstraint:] + 123
15 UIKit 0x00a8ce60 ___updateViewDependenciesForConstraint_block_invoke_0 + 51
16 UIKit 0x00a80cee _updateViewDependenciesForConstraint + 224
17 UIKit 0x00a80bea -[UIView(UIConstraintBasedLayout) _layoutEngine_didAddLayoutConstraint:roundingAdjustment:mutuallyExclusiveConstraints:] + 202
18 UIKit 0x00a80da7 -[UIView(UIConstraintBasedLayout) _tryToAddConstraintWithoutUpdatingConstraintsArray:roundingAdjustment:mutuallyExclusiveConstraints:] + 61
19 UIKit 0x00594be4 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 447
20 UIKit 0x005a081f -[UIScrollView _didMoveFromWindow:toWindow:] + 65
21 UIKit 0x0059505d -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1592
22 UIKit 0x0059505d -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1592
23 UIKit 0x005905e6 -[UIView(Hierarchy) _postMovedFromSuperview:] + 157
24 UIKit 0x00596af4 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1784
25 UIKit 0x0058eeed -[UIView(Hierarchy) addSubview:] + 56
26 UIKit 0x007c58a9 -[UINavigationTransitionView transition:fromView:toView:] + 513
27 UIKit 0x007c56a0 -[UINavigationTransitionView transition:toView:] + 55
28 UIKit 0x00641c61 -[UINavigationController _startTransition:fromViewController:toViewController:] + 2344
29 UIKit 0x00641eab -[UINavigationController _startDeferredTransitionIfNeeded:] + 386
30 UIKit 0x006433d6 _popViewControllerNormal + 280
31 UIKit 0x00643675 -[UINavigationController _popViewControllerWithTransition:allowPoppingLast:] + 449
32 UIKit 0x0c53b780 -[UINavigationControllerAccessibility(SafeCategory) _popViewControllerWithTransition:allowPoppingLast:] + 143
33 UIKit 0x00642625 -[UINavigationController popViewControllerAnimated:] + 57
Update
I'm pretty sure this is an internal auto-layout issue like the one posted here: Strange Crash when dismissing view controller, auto-layout to blame?
I guess I'll just switch back to struts and springs.....
Upvotes: 1
Views: 4527
Reputation: 783
Yep problem was some sort of bug/issue with auto-layout. I'm not sure what is is, but I've run into this issue elsewhere with system added controls (like the cancel button on a UISearchBar). I Converted the whole project to struts and it works with all the same code.
I'll wait until auto-layout's been around a bit longer before converting back.
Strange Crash when dismissing view controller, auto-layout to blame?
Upvotes: 0
Reputation: 1489
[self.navigationController popViewControllerAnimated:YES];
Above code should not bring an error but wen you pop a view from the stack, the dealloc method of the view would automatically called. I believe you might have some memory related issues or you are releasing some zero retain count object in the dealloc method of the view.
Upvotes: 2
Reputation: 76
where ever you have called the delegate ,just after that you can call
[self.navigationController popViewControllerAnimated:YES]
to go to the previous controller,but if u have to go to different controller then get the reference of that controller and use
[self.navigationController popToViewController:referenceOfYourVC animated:YES]
Upvotes: 2
Reputation: 2451
You are trying to cut the branch of tree by standing on it :)
If you want to pop the view controller which is currently displaying on the screen. You can simply do this:
[self.navigationController popViewControllerAnimated:YES];
Upvotes: 4