2012-01-20 4 views
0

두 개의 뷰 A와 B가 있습니다. A가 B를 푸시하고 B가 A로 팝백합니다. A에서 "shouldAutorotateToInterfaceOrientation"을 사용하여 회전을 Portrait 및 PortraitUpsideDown로 제한합니다.밀기 전에보기를 회전 하시겠습니까?

B에서는 회전을 LandscapeLeft/Right로 제한합니다.

그러나 내 장치의 초기 방향에 관계없이 B를 보려고하면 장치를 회전 할 때까지 B 뷰도 세로 방향으로 표시됩니다. 그때부터 자동으로 LandscapeLeft/Right로 회전합니다.

필자가 지금까지 읽은 모든 내용은 shouldAutorotateToInterfaceOrientation에 관한 이야기이지만, 필자는 올바르게 설치했다.

보기 B가 가로 모드에서 항상 시작하도록 만드는 방법은 무엇입니까?

감사합니다.

+0

버튼을 누른 후 사용자가 장치를 회전하게하므로 디자인을 다시 고려해야합니다. – Costique

+0

@Costique 앱 디자인을 그대로 유지하고 싶습니다. 모든 뷰는 같은 ​​방향에서 시작합니다. 동영상을 재생할 때 YouTube 앱과 비슷합니다. – wayneh

답변

1

B라는 이름의보기 컨트롤러를 항상 가로로 시작하게하는 가장 쉬운 방법은 내비게이션 컨트롤러에 밀어 넣는 대신 모달로 표시하는 것입니다. 이것은 YouTube 앱이 인터페이스를 회전하는 데 사용하는 방법 인 것 같습니다.

B *nextVC = [[B alloc] initWithNibName:nil bundle:nil]; 
[self.navigationController pushViewController:nextVC animated:NO]; 
UIViewController *cont = [[UIViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:cont animated:NO]; 
[cont dismissModalViewControllerAnimated:NO]; 

이 믿거 나 말거나가 실제로 좋은 효과를 : 당신이 절대적으로보기를 밀어해야하는 경우

B *nextVC = [[B alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:nextVC animated:YES]; 

당신은 같은 것을 할 수 있습니다.

+0

완벽하게 작동합니다! 푸시 변형 (두 번째 코드 블록)을 사용하여 나머지 코드도 동일하게 유지할 수있었습니다. 무리 감사! – wayneh

+0

@wayneh 듣고 있으면 다행입니다.이 대답이 찾고있는 것이라면 동의로 표시하십시오. – NJones

1

모달보기를 사용해야합니다. 그리고 Done 버튼이나 비슷한 것을 가지고 dismissModalViewControllerAnimated를 트리거하십시오.

관련 문제