【问题标题】:- (void)viewWillAppear:(BOOL)animated detect custom animation- (void)viewWillAppear:(BOOL)animated 检测自定义动画
【发布时间】:2011-06-23 07:44:06
【问题描述】:

我有一个按钮,按下它会推动视图控制器,但是我使用的是自定义动画,所以 pushViewController: childController animated: 设置为 NO。我想做的是在我的- (void)viewWillAppear:(BOOL)animatedmethod 中检测这个自定义动画并写一个这样的 if 语句;

- (void)viewWillAppear:(BOOL)animated { 
     if (customAnimation occured) {//Do this} 
     else {//Do this}
}

这是我的按钮推动视图控制器的方法。

- (void)nextPressed:(id)sender {
    childController = [[CategoryOneDetailController alloc] initWithNibName:xibDownName bundle:nil];
    [UIView  beginAnimations: @"Showinfo"context: nil];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.75];
    [self.navigationController pushViewController: childController animated:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.navigationController.view cache:NO];
    [UIView commitAnimations];
    [childController release];
}

任何帮助将不胜感激,谢谢,Sami。

【问题讨论】:

    标签: objective-c if-statement animated viewwillappear commitanimations


    【解决方案1】:

    如果你不使用标准动画,我认为你最好的办法是在你的推送视图控制器中添加一个属性,在自定义动画的情况下设置为YES(默认情况下NO不会中断任何现有行为)。然后您可以在viewDidAppear: 中查看该属性。

    如果您需要在动画运行后执行自定义逻辑,您可能需要设置动画完成处理程序或块。

    【讨论】:

    • 感谢您的回复,我将如何向视图控制器添加属性,对不起,我还在学习。
    • 就像您编写的任何其他代码一样。在控制器的 .h 文件中添加变量 BOOL usesCustomAnimation;@property BOOL usesCustomAnimation;,在 .m 文件中添加变量 @synthesize usesCustomAnimation;。然后,在分配/初始化控制器之后,只需执行 childController.usesCustomAnimation = YES;
    • 谢谢,一切都很好,我在正确的轨道上,使用的是 NSString 而不是 BOOL 但是我错过了这部分'childController.usesCustomAnimation = YES;'。
    • 我不认为你可以帮助解决另一个小问题,当调用 nextPressed 方法时,我想隐藏一个标签然后运行自定义动画,所以我添加了以下代码 [label setAlpha: 0];在动画之前但是它不起作用标签没有隐藏所以我尝试在动画之前添加一个计时器 [NSThread sleepForTimeInterval:1];但仍然没有运气,知道为什么吗?
    • 检查label是否为nil,可能没有连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    相关资源
    最近更新 更多