在ViewDidAppear中仅调用一次动画,甚至重新加载视图

时间:2014-12-06 09:27:17

标签: ios objective-c iphone animation viewdidload

我在视图的动画中遇到问题。
首先,我在ViewDidLoad方法中制作了一个动画。它完美地运作。
然后在视图中,我需要使用以下方法通过故事板ID从故事板中调出另一个视图

UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    myprofile *obj = [story instantiateViewControllerWithIdentifier:@"myprofile"];
    [self presentViewController:obj animated:YES completion:nil];

此视图仅用于首选项和设置。设置完成后,我打电话给

[self dismissViewControllerAnimated:YES completion:nil];

问题出现时,它被解雇了。它之前可以回到viewDidload,但动画又开始了。

我的问题是,无论如何,当我解除第二个视图时,我是否可以跳过我在viewDidload中调用的动画?

非常感谢

3 个答案:

答案 0 :(得分:1)

也许您可以使用类似var playing : Bool = true的属性创建一个继承UIViewController的类,并在关闭视图控制器之前更改它。

答案 1 :(得分:1)

由于每次在显示控制器之前重新创建控制器,都需要在某处存储标记。粗略地讲,快速破解就是在动画上使用dispatch_once。但您可能决定在父控制器中存储标志并从父控制器手动启动动画。有很多种方法可以组织它。

答案 2 :(得分:1)

您可以使用添加/发布本地通知。管理一个bool变量,其中YES表示go动画,NO表示没有动画。 在调用动画之前在viewdidLoad中添加观察者。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(SettingsDone) name:@"AnimationDone" object:nil];
if (goAnimate){
  UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 myprofile *obj = [story instantiateViewControllerWithIdentifier:@"myprofile"];
 [self presentViewController:obj animated:YES completion:nil];
}

-(void)SettingsDone{ goAnimate=NO; }

您可以在解除弹出视图之前将本地通知发布到父类。

[NSNotificationCenter defaultCenter]postNotificationName:@"AnimationDone" object:nil userInfo:nil];
[self dismissViewControllerAnimated:YES completion:nil];