dismissViewControllerAnimated:完成:立即发生,除非我克服它

时间:2013-08-16 14:44:34

标签: ios uiviewcontroller modalviewcontroller

我有一个以模态显示的自定义UIViewController。我称之为mainMenu

它有自己可爱的小过渡动画,可以让它的视图从屏幕上滑落。当我想解雇它时,我想调用自定义动画,然后在完成后实际解除它。看起来这应该有效:

- (void) dismissCustomViewController {
    [mainMenu slideMenuPanelsAway];
    [self dismissViewControllerAnimated:YES completion:nil];
}

但是,在我看到自定义幻灯片之前,这会让视图控制器立即消失。

让视图控制器等到菜单消失后才能消失的正确方法是什么?

我尝试了很多东西。我只找到了一种方法让它发挥作用:

- (void) dismissCustomViewController {
    [mainMenu slideMenuPanelsAway];
    [self performSelector:@selector(dismissController) withObject:nil 
       afterDelay: 2.0f];
}

(我写了一个名为dismissController的自定义方法,只是为了让选择器更易于使用,它基本上只是调用[self dismissViewControllerAnimated:YES completion:nil];。)

使用手动延迟设置而不是实际基于完成动画时,这似乎很糟糕。必须有更好的方法,不存在吗?

1 个答案:

答案 0 :(得分:3)

使用animateWithDuration:animations:completion:,并在动画块中执行“slidey stuff”并在完成块中执行解雇。

[UIView animateWithDuration:.5 animations:^{
        //Your custom animation stuff here

    } completion:^(BOOL finished) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }];