我正在使用iOS7中引入的UIViewController动画过渡.我可以使用segue等在VC之间来回产生一些非常好的转换.
看看下面的图片:
如果一次只有一个segue / vc,我可以很容易地来回走动.例如,如果我从屏幕1转到屏幕2,动画效果很好.然后说我回到1或前进到3,它完美地工作.
但是,如果你在底部的屏幕4上注意到有一个按钮,上面写着“返回屏幕1” – 这是一个放松屏幕1的问题.问题是,我无法让过渡动画工作.实际上,委托方法永远不会被调用.
这是我如何设置它(例如从屏幕2到3的动画):
//This is found in screen 2's view controller .m
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"screen2to3"]) {
UIViewController *destination = segue.destinationViewController;
destination.transitioningDelegate = self;
destination.modalTransitionStyle = UIModalPresentationCustom;
}
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {
STSlideAnimation *animator = [STSlideAnimation new];
animator.presenting = YES;
return animator;
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed {
STSlideAnimation *animator = [STSlideAnimation new];
return animator;
}
//This is the unwinding segue action
-(IBAction)returnToScreen2:(UIStoryboardSegue *)segue{
}
这对于screen3和back2都是完美的.动画被双向调用.但是,当一次返回多个vc时,我无法使用任何动画.有任何想法吗?如果我需要发布更多示例代码,请告诉我.
最佳答案 您需要为要应用的每种类型的转换创建自定义segue类
#import <UIKit/UIKit.h>
@interface CustomSegue : UIStoryboardSegue
@end
@implementation CustomSegue
-(void)perform {
// write your transition code here
// this code will be called every time transition is made
}
在storybord中选择一个segue – 在检查器中将其类型更改为自定义 – 选择您在上面的“CustomSegue”中创建的自定义类
如果你已经正确地进行了子类化,那么你将找到如下的检查器
像往常一样放松,但即使你已经从第4个控制器加到第1个控制器也能获得相同的效果