在当前可见之前解除先前呈现的模态视图控制器

时间:2015-11-03 10:15:31

标签: ios objective-c uiviewcontroller hierarchy presentviewcontroller

我有2 UIViewController's[self presentViewController:viewController animated:YES completion:nil];一起呈现,我想解雇其中的第一个,没有动画(无论如何用户都看不到),第二个(当前可见)将被解雇后,用户将看到父视图控制器同时显示它们。

- Parent
  - First -> Dismiss first without animation
    - Second -> Dismiss second with animation

我该怎么做?

2 个答案:

答案 0 :(得分:0)

使用当前视图控制器层次结构,如果第一个视图控制器将被关闭,它将自动关闭第二个视图控制器。如果您不希望该行为比使父项存在第二个视图控制器。您可以使用[self.presentingViewController presentViewController:secondViewController animated:YES completion:nil]

从第一个视图控制器执行此操作

答案 1 :(得分:0)

你为什么要这样做?

您应该这样做,以获得更清晰的视图层次结构和更好的用户体验:

呈现第一个视图控制器:

[self presentViewController:viewController1 animated:YES completion:nil];

首先解雇&目前的第二个视图控制器:

__weak MyViewController *aBlockSelf = self;

[self dismissViewControllerAnimated:YES completion:^{
    [aBlockSelf presentViewController:viewController2 animated:YES completion:nil];
}];