我正在尝试使用自定义转换。我希望从视图控制器1到2进行“覆盖垂直”转换,然后在移动到View Controller 3时再次将View Controller 2(中间的一个)向下滑动。故事板如下所示:
http://i.stack.imgur.com/bJYXI.png
我正在使用与此帖子相关联的教程。并且还使用答案中提供的代码替换了.m代码:
Xcode custom segue - Opposite of Cover Vertical (top to bottom) - COMPLETE NEWBIE
我创建了一个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
当我尝试运行模拟器时,我可以很容易地从Controller View 1到2,但是当我尝试使用自定义segue从Controller视图2移动到3时崩溃。
任何人都可以提供帮助。
提前非常感谢!在这里苦苦挣扎! :)
答案 0 :(得分:5)
自iOS时代以来已经过去了一段时间,但.h
不应该定义seque类的子类而不是viewcontroller吗?喜欢
@interface FromTopReplaceSegue : UIStoryboardSegue
您可以阅读its documentation以了解有关子类化的一些注意事项......