ios - 使用 CATransition 的自定义 Segue 不工作

标签 ios storyboard modal-dialog segue catransition

我正在尝试在我的 viewController 之间创建自定义转换。我正在关注 this教程,但在单击/点击按钮后没有任何反应!

这是 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

日志已记录,但未执行任何转换,也未更改 View Controller 。 我还将 segue 样式更改为“custom”,将类更改为“ZHCustomSegue”

我错过了什么吗?

谢谢

最佳答案

将 segue 的最后两行更改为:

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

您试图引用不存在的导航 Controller 。

关于ios - 使用 CATransition 的自定义 Segue 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793292/

相关文章:

ios - iphone 5 响应修复导航栏故障?

ios - UiTextField 在 Swift 1.2 和 2.0 中编辑时更改字体

iOS 10 Swift 和定义 UI 的最佳实践

javascript - 在 Modal 上显示 struts2 操作错误消息

javascript - Bootstrap Modal 不显示

ios - 是否可以订阅AVAudioSession类别/模式更改的事件?

ios - 如何从自定义 View Controller 类加载初始 View Controller

ios - 如何以编程方式更改全局色调颜色?

javascript - JavaScript 模态对话框是否可以只对选项卡模态而不对整个浏览器窗口模态?

ios - 如何使用 Facebook 延迟深度链接功能进行新安装并在将 iOS 应用程序发布到 AppStore 之前对其进行测试?