我有一个tableViewController,它最初是屏幕上的主视图控制器。在这种情况下,我使用了willRotateToInterfaceOrientation:toInterfaceOrientation:duration方法来调用reloadData以使我的表重新加载其内容。这有点像预期的那样,在方向改变时,表格将重新加载其内容。
稍后,我需要将tableViewController放入navigationController。完成此操作后,仍会被调用的willRotateToInterfaceOrientation:toInterfaceOrientation:duration方法无法正确刷新表内容。
我的猜测是,通过将tableViewController放入navigationController,这已经影响了发送旋转事件的顺序,并且当调用reloadData方法时,它在tableView的生命周期中为时过早,并且在旋转之前发生了更改。我已经确保使用一些日志语句调用willRotateToInterfaceOrientation:toInterfaceOrientation:duration方法。另外,为了看看会发生什么,我实现了didRotateFromInterfaceOrientation:fromInterfaceOrientation方法,我放置了reloadData语句,这样就可以正确地重新加载表内容。但是,这会在旋转动画之后发生,然后重绘表格,从而产生明显的UI移动。
有没有其他人在此之前看到此行为或知道如何解决此问题?
感谢您的任何建议。
答案 0 :(得分:2)
您还应该查看其他视图旋转方法。请参阅http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html
中的“回复查看轮换事件”也许这两个中的一个?
- didAnimateFirstHalfOfRotationToInterfaceOrientation:
- willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: