模态没有过渡

时间:2012-08-06 19:39:07

标签: objective-c ios storyboard modalviewcontroller

如何在显示模态时从模态segue中删除过渡效果:

[self performSegueWithIdentifier:@"SomeIdentifier" sender:self];

我知道我可以进入故事板并在4种不同的动画之间切换,但我不想要任何动画!如何删除它们?

我知道我可以说presentModalViewController animated: NO但我没有,也不能这样称呼它。我需要使用performSegueWithIdentifier方法。

4 个答案:

答案 0 :(得分:15)

在故事板中,您可以选择您的segue,并在“属性”检查器中取消选中“动画”。应该这样做。

答案 1 :(得分:11)

以下是无动画片段的完整来源:

BVNoAnimationSegue.h

#import <UIKit/UIKit.h>
@interface BVNoAnimationSegue : UIStoryboardSegue
@end

BVNoAnimationSegue.m

#import "BVNoAnimationSegue.h"

@implementation BVNoAnimationSegue

- (void)perform
{
    [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];
}

@end

要使用此功能,请将文件添加到项目中(例如,作为BVNoAnimationSegue.m / .h),然后在故事板中,选择“自定义”作为您的Segue类型,并在 Segue Class 框中键入BVNoAnimationSegue 。在您完成此操作后,当您在将来在UIViewControllers之间进行CTRL拖动时,Xcode似乎非常聪明地添加了“no animation segue”作为选项。

答案 2 :(得分:9)

如果您需要segue但不想要动画,则需要制作自定义segue(不带动画)。

你应该在视图控制器编程指南中查看Apples "creating custom segues" example,他们会做一个没有动画的自定义模态segue(就像你想要的那样)。

答案 3 :(得分:-1)

我们可以采取的另一种方式

YourViewController *aYourViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"aYourViewControllerIdentifier"];
[self.navigationController pushViewController:aYourViewController animated:NO];

并将@"aYourViewControllerIdentifier"添加到故事板中的视图控制器。