我在viewWillAppear:
方法中有一个UIView动画,动画的行为与ControlView
的动作有关。如果NavigationController正在推动View
动画应该正常播放,如果拉回View
,动画应该反向播放。
如何在ViewController
方法中查看当前viewWillAppear:
是否被推送或拉出?
答案 0 :(得分:3)
在iOS7中,您可以实现UINavigationController委托方法
- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC;
从 UINavigationControllerOperation 操作
获取信息typedef NS_ENUM(NSInteger, UINavigationControllerOperation) {
UINavigationControllerOperationNone,
UINavigationControllerOperationPush,
UINavigationControllerOperationPop,
};
文档说:
调用以允许委托者返回交互式动画制作者对象 在视图控制器转换期间使用。
如果要提供自定义,请实现此委托方法 添加到视图控制器之间的交互式转换 或从导航堆栈中删除。你返回的对象应该 配置过渡的交互方面,应该工作 用animationController参数中的对象启动 动画。
负责管理过渡的动画师对象 动画,如果你想使用标准导航,则为零 控制器转换。
因此,在简单观察过渡的情况下,你应该在这个方法中返回nil。
答案 1 :(得分:0)
您可以使用UINavigationController
的{{1}}媒体资源:
viewControllers
根据Apple Documentation:@property(nonatomic, copy) NSArray *viewControllers
你可以打印viewControllers数组的索引,它会让你知道你现在站在哪个viewController上。
The root view controller is at index 0 in the array, the back view controller is at index n-2, and the top controller is at index n-1, where n is the number of items in the array.