2012-12-23 3 views
4

다른보기 컨트롤러를 시작하려면 컨테이너보기를 사용하고 싶지만 프로그램 방식으로 할당하는 방법에 대한 정보는 찾을 수 없습니다. 사용자 인터페이스에서 할 수 있지만 coes로 하나 만들고 UIviewController에 연결하려면 어떻게해야합니까? 정상적인 UIview처럼 동작합니까?IOS에서 컨테이너보기

+0

'- [UIViewController presentModalViewController : animated :]'& co. Apple의 훌륭한 문서를 읽어보십시오. –

+0

하지만 컨테이너를 사용하고 싶습니다. – Alessandro

+0

자식보기 컨트롤러로 설정하십시오. – sridvijay

답변

11

질문에 답하면 코드에서보기 컨트롤러 포함을 사용하는 방법을 묻습니다. 나는 아이 뷰 컨트롤러를 추가하는 등,이 일을 당신에게 코드를 보여줍니다 보기 컨트롤러 프로그래밍 가이드의 Creating Custom Container View Controllers 섹션 체크 아웃 좋을 것 :

[self addChildViewController:content];     // 1 
content.view.frame = [self frameForContentController]; // 2 
[self.view addSubview:self.currentClientView]; 
[content didMoveToParentViewController:self];   // 3 

(아이 뷰 컨트롤러를 사용하여 적어도 사람에서 그 돈 전체 화면을 차지하지 않음) 하위보기 컨트롤러의 경계를 나타내는 부모보기 컨트롤러의보기에 UIView이 있으면 유용합니다. 그것은 많은 작업을 크게 단순화합니다. 위의 코드 스 니펫에서 하위 뷰는 frameForContentController이라고 가정합니다.

또는 하나를 제거 (이 코드에서, content 아이 컨트롤러를 참조하는 UIViewController *이 제거되는 것입니다) :

:

[content willMoveToParentViewController:nil]; // 1 
[content.view removeFromSuperview];   // 2 
[content removeFromParentViewController];  // 3 

그리고 다른 자식 컨트롤러와 자식 컨트롤러를 교체하려는 경우

- (void) cycleFromViewController: (UIViewController*) oldC 
       toViewController: (UIViewController*) newC 
{ 
    [oldC willMoveToParentViewController:nil];      // 1 
    [self addChildViewController:newC]; 

    newC.view.frame = [self newViewStartFrame];      // 2 
    CGRect endFrame = [self oldViewEndFrame]; 

    [self transitionFromViewController: oldC toViewController: newC // 3 
      duration: 0.25 options:0 
      animations:^{ 
      newC.view.frame = oldC.view.frame;      // 4 
      oldC.view.frame = endFrame; 
      } 
      completion:^(BOOL finished) { 
      [oldC removeFromParentViewController];     // 5 
      [newC didMoveToParentViewController:self]; 
      }]; 
} 

WWDC 2011 - Implementing UIViewController Containment도 확인하시기 바랍니다.

0

부모 VC가 소유하고있는 일반 UIView 만 사용하십시오. 자식 VC를 생성하고 부모 VC에 addChildViewController:의 도움으로 추가 한 다음 자식 뷰의 하위 뷰를 하위 뷰로 추가합니다 (VC의 viewDidLoad 메서드에서 addSubview:).

+1

'addChildViewController'를 수행 할 때마다 반드시 'didMoveToParentViewController'를 수행하십시오. – Rob

+0

감사합니다. –

관련 문제