1

컨테이너보기를 사용하여 앱을 제작 중입니다. 제대로 사용하는 방법에 대한 예제를 찾기 위해 인터넷을 탐색했지만 불행히도 거의 예제를 찾지 못했으며 지금까지 스토리 보드를 사용하려는 사람이 없었습니다. 여기 내 스토리 보드의 사진입니다 : app scheme스토리 보드 및 탐색과 함께 컨테이너보기 사용

내가 쓴 코드는 이것이다 : (FirstWinViewController.m)

#import "FirstWinViewController.h" 
#import "ContainerClassViewController.h" 

@interface FirstWinViewController() 

@end 

@implementation FirstWinViewController 

- (IBAction)clickOne:(id)sender { 

    ContainerClassViewController *viewContained = [[self.childViewControllers[0] viewControllers] objectAtIndex:0]; 

    [viewContained gotoSegue:1]; 

} 
- (IBAction)clickTwo:(id)sender { 

    ContainerClassViewController *viewContained = [[self.childViewControllers[0] viewControllers] objectAtIndex:0]; 

    [viewContained gotoSegue:2]; 

} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

(ContainerClassViewController.m)

#import "ContainerClassViewController.h" 

@interface ContainerClassViewController() 

@end 

@implementation ContainerClassViewController 

-(void)gotoSegue:(int)umOuDois { 

    switch (umOuDois) { 
     case 1: 

      [self.navigationController popToRootViewControllerAnimated:NO]; 

      [self performSegueWithIdentifier:@"seguePush1" sender:nil]; 
      break; 

     case 2: 

      [self.navigationController popToRootViewControllerAnimated:NO]; 

      [self performSegueWithIdentifier:@"seguePush2" sender:nil]; 
      break; 

     default: 
      break; 
    } 

} 

그것은 노력은 내가 원하는 방식대로. 내 질문은 :

입니다. 애플의 규칙에 맞습니까?

. 이 접근 방식은 컨테이너 뷰를 코드로 생성하고 AppDelegate를 사용하여 관리하는 예제보다 더 많은 메모리를 사용하여 휴지통을 남기거나 리소스를 사용합니까?

미리 감사드립니다.

+0

은 ** ... http://stackoverflow.com/a/23403979/294884받는 아래로 스크롤 섹션 "식별자 ...". 그것은 쉽습니다. – Fattie

답변

2

질문과 @ JoeBlow의 답변이 혼동 스럽습니다.

컨테이너보기는 iOS 6부터 시작합니다. 컨테이너보기를 IB에서 양식으로 끌어 놓은 다음 컨테이너보기에서 다른 VC로 제어 드래그합니다. IB는 귀하를 위해 삽입물을 만드는 것을 제안합니다. 식별자를 지정하면 상위 뷰 컨트롤러가로드 될 때 자식 뷰 컨트롤러가 자식으로로드되고 설치됩니다.

부모님의 prepareForSegue 메서드는 자식로드시에 실행되며 자식에 대한 포인터를 저장하거나 부모를 자식의 대리자로 설치하거나 필요한 다른 설정을 할 수있는 기회를 제공합니다.

나는 2 개의 컨테이너 뷰를 사용하여 이것을 보여주는 github 샘플 프로젝트를 가지고 있는데, 각각은 테이블 뷰 컨트롤러를 내장하고있다. 테이블 뷰 컨트롤러와 부모는 내가 정의한 간단한 프로토콜을 사용하여 앞뒤로 의사 소통합니다.

당신은이 링크에서 프로젝트를 볼 수 있습니다

: 그것은 ** 완전히 여기에 자세히 설명 것 https://github.com/DuncanMC/test

+0

Duncan C, 답변 해 주셔서 감사합니다. 컨테이너 뷰 내 viewcontroller에 대한 포인터를 얻는 방법은 정말 효과적 이었지만, 당신이 지적한 방법은 더 효과적이었습니다. – user1141890

+0

Magic? 상자 안의 코드를 구현하기 쉽습니다. –

+0

@ Pétur 좋아, 마술은 과장이다. 이 작업을 수동으로 수행하고 모든 것이 올바르게 작동하도록하기 위해 할 일이 꽤 있습니다. –