滑动手势到下一个视图控制器崩溃
问题描述:
我有两个视图控制器。我创造了从第一视图 - 控制到第二个,反之亦然定制赛格瑞和链接都塞格斯到下面的类:(我从网上下载的互联网教程类)滑动手势到下一个视图控制器崩溃
#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)
我该如何解决这个问题?
答
创建的UIViewController物镜这样
SomeViewController * someViewController = [self.storyboard instantiateViewControllerWithIdentifier:@ “SomeViewController”];
在滑动方法中运行一个NSLog,并检查是否将它关闭两次,通常可能发生。你应该在你的问题中包含滑动方法代码。如果这是问题,您应该创建一个BOOL属性,并且在触发滑动动画之前,您设置了bool isAnimating = YES;并检查你是否只在isAnimation == NO时触发动画。如果这解决了你的问题,让我知道我会添加答案,所以你可以在这里接受它。 – 2017-02-12 03:03:31
谢谢你的回答。我做了你所说的,但没有奏效。任何其他想法?我感谢你的时间,谢谢! @Sneak – user1935016
我需要更多的细节比“没有工作”,以帮助你进一步。你是否测试过,并确保100%,如果刷卡被一次只调用一次?只有一次打电话时,你仍然崩溃了? – 2017-02-12 14:13:24