0

我正在尝试使用自定义转换。我想要从视图控制器 1 到 2 的“覆盖垂直”过渡,然后在移动到视图控制器 3 时让视图控制器 2(中间的)再次向下滑动。故事板如下所示:

http://i.stack.imgur.com/bJYXI.png

我正在使用从这篇文章链接到的教程。并且还用答案中提供的代码替换了 .m 代码:

Xcode 自定义转场 - Cover Vertical 的对面(从上到下) - 完整新手

我创建了 UIViewController 的子类并将其命名为 FromTopReplaceSegue。我的 .h 和 .m 代码如下所示:

。H

#import <UIKit/UIKit.h>

@interface FromTopReplaceSegue : UIViewController
@property(nonatomic, readonly) id sourceViewController;
@property(nonatomic, readonly) id destinationViewController;

@end

.m

#import "FromTopReplaceSegue.h"

@interface FromTopReplaceSegue ()

@end

@implementation FromTopReplaceSegue

-(void)perform{
    UIViewController *sourceViewController = (UIViewController *) self.sourceViewController;
    UIViewController *destinationViewController = (UIViewController *) self.destinationViewController;
    [sourceViewController.view addSubview:destinationViewController.view];
    [destinationViewController.view setFrame:sourceViewController.view.window.frame];
    [destinationViewController.view setTransform:CGAffineTransformMakeTranslation(0, -sourceViewController.view.frame.size.height)];
    [destinationViewController.view setAlpha:1.0];

    [UIView animateWithDuration:0.75
                          delay:0.0
                        options:UIViewAnimationOptionTransitionFlipFromTop
                     animations:^{
                         [destinationViewController.view setTransform:CGAffineTransformMakeTranslation(0, 0)];
                         [destinationViewController.view setAlpha:1.0];
                     }
                     completion:^(BOOL finished){
                         [destinationViewController.view removeFromSuperview];
                         [sourceViewController presentViewController:destinationViewController animated:NO completion:nil];
                     }];}

@end

当我尝试运行模拟器时,我可以轻松地从控制器视图 1 到 2,但是当我尝试使用自定义 segue 从控制器视图 2 移动到 3 时它会崩溃。

任何人都可以帮忙。

非常感谢您!在这里挣扎!:)

4

1 回答 1

5

自从我的 iOS 时代以来已经过去了一段时间,但不应该.h定义序列类的子类而不是视图控制器吗?喜欢

@interface FromTopReplaceSegue : UIStoryboardSegue

您也可以阅读其文档以获取有关子类化的一些说明...

于 2013-09-10T11:42:12.257 回答