2012-02-29 85 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,所以我负责的一个股票类。我曾考虑给UINavigationController添加一个类别方法viewWillAnimateSubviewLayoutWithDuration:(NSTimeInterval)interval,该方法将循环它的视图控制器测试/发送相同的方法到它的视图控制器,以便它们可以执行它们的动画,但这并不是很理想,尤其是如果有一种方法可以使用stock方法。

我正在考虑编写自己的NavigationController,但如果我不必这样做,我不想做很多工作。

回答

0

对于那些关心,我最终编写了我自己的导航容器控制器。这是很多工作,但最终因为几个原因而变得理想。首先,创建自定义容器控制器给了我更多关于视图控制器如何工作的深入理解,这对我有帮助。其次,它让我对“导航控制器”的工作原理有了更多的控制,使我能够轻松实现自定义过渡和自定义弹出/推送方法,包括我的急需的'替换'(弹出,然后推送)方法应用。

相关问题