【问题标题】:Quartz animation error石英动画错误
【发布时间】:2013-04-15 12:11:38
【问题描述】:

我已经包含了<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];
}

当我点击按钮时,页面会像你期望的那样卷曲:

当我单击下一个按钮时(应该将页面卷曲回来),我收到此错误:

线程 1:EXC_BAD_ACCESS(code=2, address=0x8)

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

出了什么问题?

编辑:再读一小时后 - 会不会是记忆问题?

【问题讨论】:

  • 有你#import 吗?
  • 我愿意,我现在已经完成了这部分工作 - 给我 2 秒将更新问题

标签: ios objective-c xcode quartz-core


【解决方案1】:

我不确定,但我认为UIView 不会保留您传递给它的控制器。假设您使用的是 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];

为了确保它被保留。

【讨论】:

  • 嗨!我认为您对此很满意,如果可以的话,我只需要一些帮助来实施它吗?我有 FirstViewController 和 FilterViewController,FirstViewController 卷曲显示 Filter,然后 Filter 卷曲显示 First,我将 *_filter... 放入哪个标题和 *_first... 非常感谢!!
  • 很高兴为您提供帮助!如果这是正确答案,请随意标记它;)。在您的情况下,最简单的方法是让两个视图控制器相互了解,方法是给它们一个指向彼此的指针。所以基本上FilterViewController 得到@property (strong) FirstViewController *firstViewController; 而FirstViewController 得到@property (strong) FilterViewController *filterViewController;。然后,在总体类(可能是 AppDelegate)中,创建两个视图控制器并相应地设置属性。不要忘记在标题中使用前向声明。
  • 您好,感谢您的评论!越来越近了,但仍然可以掌握 obj-c!我已经添加了代码并为相反的头文件做了一个#import,但它错误:(FirstViewController)我有@property (strong) FilterViewController *filterViewController;,它说未知类型名称FilterViewController,你的意思是FirstViewController
  • 这可能意味着您没有在标题中使用前向声明(@class FilterViewController)。
  • 嗨,对不起,我知道我在这里很厚,感谢您对我的包容!它现在有一个新错误(是的)i.imgur.com/Mgpaq4V.png 如果你喜欢我可以开始一个新问题,因为这个问题已经得到回答 - 再次感谢你的帮助!但是,如果您知道这意味着什么,我将不胜感激:)我还应该补充一点,每当我在折叠后单击显示页面上的任何按钮/步进器时都会出现错误,因此它不仅仅是加载视图是一个问题,真的迷路了!
【解决方案2】:

卷页效果真的不强制吗?

[先试试这个]

- (IBAction)searchOptions:(id)sender { 
    FilterViewController *ctrl = [[FilterViewController alloc] init];
    ctrl.modalTransitionStyle = UIModalTransitionStylePartialCurl;
    [self presentModalViewController:ctrl animated:YES];
    }

【讨论】:

  • 您好,感谢您的建议。是的,这行得通,我以前使用过这个 - 我需要明确使用 curlUp 的原因是因为在 curl 显示的页面上我有一个按钮,它设置了一些参数,然后将页面向下卷曲
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 2012-07-18
相关资源
最近更新 更多