2013-07-22 73 views
3

我想在我的viewControllers之间创建一个自定义的过渡。我遵循this教程,但点击/点击按钮后没有任何反应!CATransition的自定义塞格不工作

这是CustomSegue.m

#import "CustomSegue.h" 
#import "QuartzCore/QuartzCore.h" 

@implementation CustomSegue 

-(void)perform { 
NSLog(@"ActionTest"); 

UIViewController *sourceViewController = (UIViewController*)[self sourceViewController]; 
UIViewController *destinationController = (UIViewController*)[self destinationViewController]; 

CATransition* transition = [CATransition animation]; 
transition.duration = .25; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade 
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom 



[sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 
[sourceViewController.navigationController pushViewController:destinationController animated:NO]; 
} 

@end 

的日志中记录的代码,但不进行转变,也不是视图 - 控制的变化。 我也改变了塞格风格“定制”和类到“ZHCustomSegue”

我错过了什么吗?

谢谢

+0

你能在故事板上分享你的自定义segue的截图吗?您可以使用⌘+4 – Can

+0

您是否已将故事板文件中的segue类型更改为ZHCustomSegue? –

+0

@可以,不幸的是我需要10个声望才能在这里上传图片,所以这里是图片的链接:http://s13.postimg.org/8pgyvfhl3/Screen_Shot_2013_07_22_at_10_41_57_AM.png –

回答

4

更改您的赛格瑞的最后两行这样的:

[destinationViewController.view.layer addAnimation:transition forKey:kCATransition]; 
[sourceViewController presentViewController:destinationController animated:NO completion:nil]; 

你试图引用一个导航控制器,这是不存在的。

+0

原来的关键是在kCATransition – Andy