2012-04-17 17 views
3

私のアプリでは、カスタムアニメーションを使用しているときに、それぞれ独自のXIBであるビューを切り替えようとしています。すべてのコードを保持するために親ビューとしてベースビューコントローラを作成しましたが、これを動作させることはできません。子ビューコントローラには共通の親ビューコントローラが必要ですか?

私は自分のアプリとインターフェイスビルダーのすべてのビューコントローラ用にIBOutletを作ったので、コンセントを適切なコントローラに接続します。各コントローラは適切なXIBもロードするので、それは問題ではありません。問題は次のビューコードの変更です。

これは私のコードです:

-(void)changeViews { 
    CGRect frame = self.view.frame; 
    frame.origin.x = CGRectGetMaxX(frame); 
    theView4.view.frame = frame; 

    [self.view addSubview:theView4.view]; 
    [self addChildViewController:theView4]; 

    [self transitionFromViewController:theView1 
         toViewController:theView4 
           duration:1 
           options:UIViewAnimationOptionTransitionNone 
          animations: ^{ 
           CGRect frame = self.view.frame; 
           theView4.view.frame = frame; 
           frame.origin.x -= frame.size.width; 
           self.view.frame = frame; 
          } 
          completion:completion:nil]; 

そして、これは、コンソールのクラッシュです:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Children view controllers <MyGameViewController: 0x1dd25210> and <Settings: 0x1dd249d0> must have a common parent view controller when calling -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]' 

誰もがこの問題を解決する方法を知っていますか?

ありがとうございます!

+0

"設定"クラスとは何ですか?どのように定義されていますか? – Stavash

+0

設定クラスは、ヘッダーファイルで宣言されたUIViewControllerで、setteredおよびgetteredであり、Interface BuilderのView Controllerアウトレットに接続されています。 –

答えて

4

あなたはこれを使用することができます:

あなたが周囲のものに子ビュー コントローラを追加するためにaddChildViewController:を使用する場合。あなたはまた コントローラーを別のコントローラー に入れたdidMoveToViewController:で子供に通知しなければなりません。 transitionFromViewController:toViewController:を使用して、1つのビュー コントローラを別のコントローラに交換し、オプションでアニメーションを与えることもできます。

これはhereから取られました(私は受け入れられた答えを完全に読むことをお勧めします)。

短いストーリーで、親ビューコントローラに移動したことを伝える必要もあります。

関連する問題