Normally my application shows all views in portrait mode except report view. Report view shows only when I am on settings view and I rotate my device to landscape mode. Now when I rotate my device to portrait mode again, report view is dismissed and settings view is displayed.
In report view
> shouldAutorotateToInterfaceOrientation
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight)||( interfaceOrientation == UIInterfaceOrientationLandscapeLeft));
Here at settings view
shouldAutorotateToInterfaceOrientation
if((interfaceOrientation == UIInterfaceOrientationLandscapeRight)||( interfaceOrientation == UIInterfaceOrientationLandscapeLeft))
{
Report *report = [[Report alloc]initWithNibName:@"Report" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:report animated:YES];
[report release];
}
return YES;
}
Don't create your viewcontroller in shouldRotate..., but in
willRotateToInterfaceOrientation:duration:
, which is where you're supposed to respond to a rotation. In yourshouldAutorotateToInterfaceOrientation:
, just return YES when you want to be able to rotate to that orientation- in your case, it looks like you want to either all orientations, or all orientations except PortraitUpsideDown.In your
willRotateToInterfaceOrientation:duration:
, you can push your viewcontroller or pop it as needed.