2017-02-12 62 views
0

我有两个视图控制器。我创造了从第一视图 - 控制到第二个,反之亦然定制赛格瑞和链接都塞格斯到下面的类:(我从网上下载的互联网教程类)滑动手势到下一个视图控制器崩溃

#import "SlideLeftCustomSegue.h" 

@implementation SlideLeftCustomSegue 

- (void)perform{ 
    UIViewController *srcViewController = (UIViewController *) self.sourceViewController; 
    UIViewController *destViewController = (UIViewController *) self.destinationViewController; 

    CATransition *transition = [CATransition animation]; 
    transition.duration = 0.3; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromRight; 
    [srcViewController.view.window.layer addAnimation:transition forKey:nil]; 

    [srcViewController presentViewController:destViewController animated:NO completion:nil]; 
} 

@end 

(我只是改变了从“右过渡“lo”左“取决于我是哪个视图控制器) 我从滑动手势调用segue。

它按预期工作,但有时是随机的,当我滑动调用segue时,它会崩溃。 这是出现的错误。

pru(745,0x1ae6d5c40) malloc: *** error for object 0x170014930:  Invalid pointer dequeued from free list 
*** set a breakpoint in malloc_error_break to debug 
(lldb) 

我该如何解决这个问题?

+0

在滑动方法中运行一个NSLog,并检查是否将它关闭两次,通常可能发生。你应该在你的问题中包含滑动方法代码。如果这是问题,您应该创建一个BOOL属性,并且在触发滑动动画之前,您设置了bool isAnimating = YES;并检查你是否只在isAnimation == NO时触发动画。如果这解决了你的问题,让我知道我会添加答案,所以你可以在这里接受它。 – 2017-02-12 03:03:31

+0

谢谢你的回答。我做了你所说的,但没有奏效。任何其他想法?我感谢你的时间,谢谢! @Sneak – user1935016

+0

我需要更多的细节比“没有工作”,以帮助你进一步。你是否测试过,并确保100%,如果刷卡被一次只调用一次?只有一次打电话时,你仍然崩溃了? – 2017-02-12 14:13:24

回答

-1

创建的UIViewController物镜这样

SomeViewController * someViewController = [self.storyboard instantiateViewControllerWithIdentifier:@ “SomeViewController”];

相关问题