두 개의 ViewController를 사용합니다. MainView와 FlipViewController. MainView에는 일련의 버튼과 컨트롤 및 그래픽 디스플레이가 포함되어 있으며 FlipView에는 설정이 포함되어 있습니다.IOS 오리엔테이션과 FlipViewController 및 마스터보기
MainView는 내가 지원하는 다양한 버튼과 그래픽 화면을 지원하기 위해 방향에 따라 다른 XIB를로드합니다. 이렇게하면 상황에 따라 다르게 배치 할 수 있습니다. StoryBoarding 기능이 Xcode에 추가되기 전에 프로젝트가 처음 생성되었습니다.
정상적인 사용법은 MainView에서 세로 모드로 시작한 다음 플립 뷰를 회전시키는 버튼을 터치합니다. FlipView (프로그램의 여러 부분 구성)에서 작업을 수행 한 다음 변경 사항을 커밋하면 MainVIew로 돌아갑니다. 지금까지는 모두 좋았습니다.
FlipView를 입력하고 FlipView가 다른 방향을 갖도록 장치를 회전하면 문제가 발생합니다. Portrait를 Lanscape로 회전시킵니다. 그런 다음 FlipView에서 MainView로 돌아갑니다. 이 시점에서, MainView는 FlipView가 수행 한 Rotation에 대해 알지 못합니다. 그래서 Portrait XIB와 함께 Portrait에서 MainView를 보여줍니다.
MainView의 willRotateToInterfaceOrientation은 FlipViewController에서 반환 한 후에 절대로 호출되지 않습니다. 따라서 오리 엔테이션 변경에 대해 결코 알 수 없으므로 결과적으로 오리 엔테이션에 대한 잘못된 XIB가 유지됩니다. 여기
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
// if portrait, load the portrait XIB for Pad or Phone
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[[NSBundle mainBundle] loadNibNamed:@"MainViewiPad" owner:self options:nil];
}else{
[[NSBundle mainBundle] loadNibNamed:@"MainView" owner:self options:nil];
}
[self viewDidLoad];
intorient = 1;
else.... handle Landscape...
그래서 나는 viewWillAppear 루틴이 회전에 대해 알아 및 시스템 - 그것을 수행 할 MAINVIEW을 야기 할 수있는 방법을 찾기 위해 노력을 실험 한 willRotateToInterfaceOrientation의 방향 핸들러의 샘플입니다 ... 현명한 방식으로. 그러나 지금까지 나는이 방식으로 시스템을 작동시키는 방법을 모른다. viewWillAppear 호출 될 때 올바른 방향으로 다시로드 할 코드를 생성해야 할 것 같아요. 하지만 시간에로드 된 변경 내용을 가져 오는 것 결코 보이지 않는 및 올바르게 viewWillAppear 메시지 내에서 새 XIB 다시로드하려고 시도하는 것 때문에이 올바르게 작동하지 않습니다.
이 동작을 이해하는 데 큰 도움이됩니다.