【发布时间】:2014-06-10 07:17:11
【问题描述】:
我一直在尝试使用UINavigationViewControllerDelegate 来实现自定义转换所需的方法。它们按预期工作,我也可以在混音中添加交互式过渡。
问题在于,当我实现这些方法时,我完全失去了对正常导航转换的默认“向右滑动返回”支持。在进入我想要正常转换的视图控制器之前,我通过设置navigationController.delegate = nil 来获得这些。这意味着我必须存储实际的旧委托并在我从视图返回时重新设置它。
文档指出应该从navigationController:interactionControllerForAnimationController: 和navigationController:animationControllerForOperation:fromViewController:toViewController: 返回nil,这正是我正在做的:
- (id<UIViewControllerAnimatedTransitioning>)navigationController:
(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
{
if([fromVC isKindOfClass:[MainViewController class]] &&
[toVC isKindOfClass:[MenuViewController class]]) {
self.menuTransition.isPresentation = YES;
return self.menuTransition;
} else if([toVC isKindOfClass:[MainViewController class]] &&
[fromVC isKindOfClass:[MenuViewController class]]){
self.menuTransition.isPresentation = NO;
return self.menuTransition;
}
return nil;
}
- (id<UIViewControllerInteractiveTransitioning>) navigationController
(UINavigationController *)navigationController
interactionControllerForAnimationController:
(id<UIViewControllerAnimatedTransitioning>)animationController
{
MenuTransition *t = (MenuTransition*)animationController;
if(![t isPresentation] && [t isInteractive]) {
return self.menuTransition;
}
return nil;
}
这里还有什么问题?
【问题讨论】:
标签: ios uinavigationcontroller delegates