2011-05-07 181 views
1

我有几个UIViewController子类。一个显示网格,另一个实质上是网格上的图块的“详细视图”。用户点击一个图块,细节视图从网格扩展到填满屏幕。自定义UIViewController转换与自转

我已经设法使视图正确动画,并可以完美地显示每个视图的内容。设备旋转时出现问题。我已经将详细视图显示为gridview的子视图,因此当我旋转设备时,网格视图控制器将获取旋转调用,而不是详细视图。

由于这是一个自定义动画,我无法使用标准的pop和push视图控制器方法。是否有一种方法,我必须调用,使这个视图控制器负责处理旋转,直到它被解雇?

感谢

回答

0

如果我理解正确的,你旋转网格视图控制器,它响应,但“详细视图”视图控制器不能正确改变?

如果是这种情况,我可以想到两种可能的解决方案(目前使用我自己)。一种解决方案是注册通知的“详细视图”。每当网格视图控制器旋转时,发送通知,并且“详细视图”应该按照您的要求进行响应。

另一种解决方案只是在加载“详细视图”时进行简单检查。

if (self.view.bounds.size.height < self.view.bounds.size.width) { 
    // apply the code you wish to size it for landscape mode; 
} 

这,当然,将只有当屏幕旋转时,使发送通知可能是一个更好的选择,以涵盖所有可能的“详细信息视图”是当前不可见的工作。

0

您可以在网格视图控制器中设置自定义委托,并在设置完成后将详细视图控制器注册为该委托。然后在网格视图控制器中实现willRotateToInterfaceOrientation:duration:didRotateFromInterfaceOrientation:,它首先调用委托(详细视图控制器)中的相应方法,然后执行super