问题
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;
}
回答1:
Don't create your viewcontroller in shouldRotate..., but in willRotateToInterfaceOrientation:duration:
, which is where you're supposed to respond to a rotation. In your shouldAutorotateToInterfaceOrientation:
, 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.
来源:https://stackoverflow.com/questions/4819709/rotate-portrait-to-landscape-and-portrait-mode-of-my-view-controller