2010-08-09 3 views
0

세로보기 및 일부 응용 프로그램 논리를 관리하는 UIViewController가 하나 있습니다. 그러나 가로 방향에 대해 다른보기를 설정해야합니다. 2 가지보기 사이의 위젯은 주로 동일하지만 레이아웃이 매우 다릅니다.하나의보기 컨트롤러, 세로 및 가로보기 두 개

첫 번째 시도는 하나의 UIViewController와 하나의 연관된 XIB를 사용하는 것이 었습니다. XIB에는 두 개의 UIView, Landscape의 LandscapeView 및 PortraitView의 PortraitView가 있습니다.

는 myController.xib는
| MYCONTROLLER (파일의 소유자)
| landscapeView
는 | - | ...
가 | portraitView
가 | - - | - 을 myWidget
가 myWidget. ..

그런 다음 myController는 view 속성을 설정하여 화면 방향에 따라 이러한보기를 전환합니다.

내 예제에서, myWidget은 본질적으로 두보기간에 동일하며 위치 변경 만이 동일합니다. 컨트롤러에는 그 중 하나에 대한 IBOutlet이 있으며이 IBOutlet은 방향 변경이 발생할 때 프로그래밍 방식으로 변경되어 올바른 방향을 가리 킵니다.

더 좋은 솔루션이 있습니까?

Apple에서 AlternateViews 샘플 코드를 확인했지만 두 가지 다른보기에 2 개의 UIViewController를 사용했습니다. 모든 이벤트/델리게이트 처리 코드를 하나의 컨트롤러에만 유지하고 두 컨트롤러간에 코드를 분할하지 않도록하고 싶습니다.

답변

0

당신은 가능성이로드/생성 될 때 뷰 컨트롤러의 view 속성에 할당됩니다 하나, 당신이 landscapeViewportraitView 추가 할 수있는 계층 구조의 다른 UIView 있습니다. 이 경우 동일한 부모보기에 myWidget을 추가 할 수 있으며 배열이 subviews 배열의 마지막에있는 한 다른 두보기를 표시하거나 숨길 때 맨 위에 표시됩니다. 부모보기가 아직없고 수동으로 view 속성을 관리하는 경우 하나를 부모로 추가 할 수 있습니다.

관련 문제