我在视图的动画中遇到问题。
首先,我在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
中调用的动画?
非常感谢
答案 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];