2016-11-04 13 views
0

xibファイルから作成されたUIViewControllerがあります。viewDidLoadとViewDidAppearが呼び出されない

私はこのようにそれを初期化:

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

私は別のUIViewControllerでサブビューにそのUIViewControllerのビューを追加:

[self.view addSubview:slipChangesVC.view]; 

今すぐ奇妙なことは、ビューが正常に追加されています何らかの理由でサブビューはviewDidLoadvieWillAppearの両方が呼び出されません。しかし、共有シングルトンを作成するメソッドと、initメソッドを正常に呼び出すことができます。

私は、二重確認するためにチェックして

  • のなしUIViewsかnil
  • XIBからコンセントが正しく
  • は、私が[super viewDidLoad][super viewWillAppear]
を呼び出していますリンクされている UIViewControllers

私はstackOverflowでさまざまなスレッドをチェックして、成功していない提案を試しました。例えば。呼び出す[slipChangesVC view]

これらの2つのメソッドが呼び出されない理由は誰にも分かりますか?

+0

おそらくこれを見てくださいhttp://stackoverflow.com/a/32965187/2237587答えの下の部分 – Simon

答えて

1

。その場合、viewDidLoadとviewWillAppearは決して呼び出されません。私は、ビューコントローラシングルトンにすることはない。この1

- (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はを一度だけと呼びます。だからシングルトンを作ることはあらゆる種類の問題を引き起こす可能性があります。

関連する問題