objective-c – 使用iOS 7 UIViewController过渡动画展开超过1个segue

我正在使用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{

}

这对于s​​creen3和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个控制器也能获得相同的效果

点赞