2016-11-04 3 views
0

UIViewController이 xib 파일에서 생성됩니다.viewDidLoad 및 ViewDidAppear가 호출되지 않습니다.

나는이처럼 초기화 :

_sharedSingleton = [[SlipChangesViewController alloc] init]; 
      [[NSBundle mainBundle] loadNibNamed:@"SlipChangesViewController" owner:_sharedSingleton options:nil]; 

나는 다른 UIViewController에있는 하위 뷰에 그 UIViewController의보기를 추가 :

[self.view addSubview:slipChangesVC.view]; 

이제 이상한 것은, 뷰가 성공적으로 추가됩니다 서브 뷰가 있지만 어떤 이유로 든 viewDidLoadvieWillAppear이 호출되지 않습니다. 그러나 공유 된 싱글 톤과 init 메서드를 만드는 메서드를 성공적으로 호출합니다.

나는 이중 확인하기 위해 검사 한

:

  • 아무도없는 UIViews 또는 전무
  • XIB에서 출구 것은 제대로
  • 내가 [super viewDidLoad][super viewWillAppear]
를 호출하고 연결되어 있습니다 UIViewControllers

stackOverflow에서 다양한 스레드를 검사하여 성공하지 못한 제안을 시도했습니다. 예. Calling [slipChangesVC view]

왜이 두 가지 방법이 호출되지 않는지 아십니까?

+0

아마도이 http://stackoverflow.com/a/32965187/2237587을 살펴보십시오. 답변의 맨 아래 부분 – Simon

답변

1

:

당신이 이미 대답 질문을 조사하십시오, 작동 확인하려면

. 이 경우 viewDidLoad 및 viewWillAppear은 호출되지 않습니다. 이 하나의

- (void)addChildViewC:(UIViewController *)childViewC 
{ 
    [self addChildViewController:childViewC]; 
    childViewC.view.frame = self.view.bounds; 
    [self.view addSubview:childViewC.view]; 
    [childViewC didMoveToParentViewController:self]; 
} 
1

이것은 하위보기 컨트롤러를 추가하는 올바른 방법이 아닙니다. 이렇게하면보기 소유자가 변경 사항을 가져옵니다. 보기 컨트롤러와보기 컨트롤러에서 분리 된보기는 viewDidLoad 및 다른보기 메소드 수신을 중지합니다. 당신은 기존 뷰를 통해 SlipChangesViewController보기를 추가 add UIViewController in subview

0

내가보기 컨트롤러 싱글 만들 결코 노력이

에 대한의 ViewController를 추가해야합니다. 그것은 싱글 톤이 아닙니다. 그것은 창조되고, 파괴되고, 다시 창조되고, 다시 파괴됩니다.

보기 컨트롤러의 수명 동안 viewDidLoad는 으로 한 번만이라고 생각합니다. 그래서 당신을 싱글 톤으로 만드는 것은 모든 종류의 문제를 일으킬 수 있습니다.