I need a little help on a problem with navigation controllers.
I have a navigationController
with 4 ViewControllers
pushed. The last vc I push presents a further ViewController
modally. The modal ViewController
presents an ActionSheet
. Depending on the user's answer I either dismiss the modal ViewController
only or I want to go back to the root ViewController
.
In the ViewController
presented modally I have:
- (void) dismissGameReport
{
[[self delegate] GameReportModalWillBeDismissed:modalToPopToRoot];
}
In the last ViewController
pushed onto the navigationController
stack I have:
- (void)GameReportModalWillBeDismissed: (BOOL)popToRoot;
{
if (popToRoot)
{
[self.navigationController popToRootViewControllerAnimated:NO];
}
else
{
[self dismissModalViewControllerAnimated:YES];
}
}
Dismissing the modal view controller works fine. However,
[self.navigationController popToRootViewControllerAnimated:NO];
does not cause the root ViewController
to display its views. Adding some log info I see that after the message to self.navigationController
the stack is correctly popped but execution continues sequentially. The screen still shows the view of the modal ViewController.
As a workaround I tried always dismissing the modal view controller and in the ViewWillAppear
method have the popToRootAnimated
message. No difference. Still the stack of controllers is popped but the screen continues showing my modal view controller's view and execution continues sequentially.
Could someone help me please?