2012-02-29 9 views
0

iPad用の独自の分割ビューコントローラを作成しました。自分自身を作成する私の主な目的は、ユーザーが自由に左の痛みを開いたり閉じたりできるようにすることです。私が抱えている問題は、私の右の痛みでビューコントローラを取得して変更をアニメーション化する方法が見つからないということです。私はスプリットビューコントローラでビューをアニメートしますが、右側のペインの他のすべてのサブビューコントローラはビ​​ューをアニメートしません。私はビューを切り替えるわけではないので、これらのメソッドを使用することはできませんし、方向を変更していないので、これらのメソッドはアウトです(ただし、とにかく試してみましたが機能しません)。誰かがこれを行う方法を知っていますか?UIViewControllerコンテナのサブコントローラのアニメーション

は現在、アニメーションを開始するための私のコードは次のとおりです。

- (void) setShowLeftPane:(BOOL)showLeftPane{ 
    if (_showLeftPane != showLeftPane){ 
     _showLeftPane = showLeftPane; 

     //Alert viewcontrollers and perform animation 
     if (showLeftPane) [_leftController viewWillAppear:YES]; 
     else [_leftController viewWillDisappear:YES]; 
     [UIView animateWithDuration:.25 animations:^{ 
      [self layoutViews]; 
      [_rightController viewWillLayoutSubviews]; 
     } completion:^(BOOL fin){ 
      [_rightController viewDidLayoutSubviews]; 
      if (_showLeftPane) [_leftController viewDidAppear:YES]; 
      else [_leftController viewDidDisappear:YES]; 
     }]; 

     //Switch out the appropriate pane button view 
     [_showLeftPane ? _openLeftPane : _closeLeftPane removeFromSuperview]; 
     [self.view addSubview:_showLeftPane ? _closeLeftPane : _openLeftPane]; 
    } 
} 

現在、私の右ペインビューコントローラはUINavigationControllerあるので、私は株式クラスを扱っています。私はカテゴリメソッドviewWillAnimateSubviewLayoutWithDuration:(NSTimeInterval)intervalをUINavigationControllerに追加することを検討しました。これは、ビューコントローラがそのビューコントローラをテストしてそのビューコントローラに送信してアニメーションを実行できるようにするものですが、在庫を使用する方法があればメソッド。

私は自分のNavigationControllerを書くことを検討していますが、それは私がしなくてもやりたくない仕事です。

答えて

0

気になる人のために、私は独自のナビゲーションコンテナコントローラを作成しました。それはたくさんの仕事でしたが、それはいくつかの理由で理想的になりました。まず、カスタムコンテナコントローラを作成することで、ビューコントローラの仕組みをより深く理解することができました。第2に、「ナビゲーションコントローラー」の仕組みをもっと制御することができ、カスタムトランジションやカスタムポップ/プッシュメソッドを簡単に実装できるようになりました。応用。

関連する問題