ios - quartz 动画错误

标签 ios objective-c xcode quartz-core

我已经包含了 <QuartzCore/QuartzCore.h>框架。

在 IBAction 上我有这个:

- (IBAction)searchOptions:(id)sender {    
    FilterViewController *ctrl = [[FilterViewController alloc] initWithNibName:@"FilterViewController" bundle:nil];
    [UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];

    [self.navigationController pushViewController:ctrl animated:NO];
}

当我点击按钮时,页面会像您预期的那样卷起:

当我点击下一步按钮(它应该将页面向下 curl )时,我得到这个错误:

线程 1:EXC_BAD_ACCESS(代码=2,地址=0x8)

我认为问题在于上述操作(而不是展开操作)。

出了什么问题?

编辑:再阅读一个小时后 - 会不会是内存问题?

最佳答案

我不确定,但我认为 UIView 不会保留您传递给它的 Controller 。假设您使用的是 ARC,您可以尝试将 FilterViewController 变成一个属性。

即在标题中添加:

@class FilterViewController;

@interface YourViewController : UIViewController {
    FilterViewController *_filterViewController;
}

然后在实现中改成:

 _filterViewController = [[FilterViewController alloc] initWithNibName:@"FilterViewController" bundle:nil];
 [UIView transitionFromView:self.view _filterViewController duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];
 [self.navigationController pushViewController:_filterViewController animated:NO];

确保它得到保留。

关于ios - quartz 动画错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014840/

相关文章:

ios - 将我的应用程序的到期日期设置为 1 个月

objective-c - Interface Builder 不断重置我的自定义 UITableViewCell 的宽度

objective-c - 使用 Storyboard在 Xcode 6 os x 应用程序中更改不同的 View

ios - 带有 contenteditable 的 UIWebview - 上标和下标不起作用

ios - 如何读取Azure应用服务中的请求正文?

ios - 什么时候可以调用 UIEdgeInsets safeAreaInsets?

objective-c - 更改 block 中的实例变量

ios - 'contentStretch' 已弃用 : first deprecated in iOS 6. 0?

iphone - 媒体播放器框架 iOS SDK

ios - 为什么 CAShapeLayer 的描边会超出框架?