【问题标题】:dismissViewControllerAnimated:Completion: Concept?解除视图控制器动画:完成:概念?
【发布时间】:2014-04-10 12:28:33
【问题描述】:

我有 3 个视图控制器 - BaseViewController->AviewController->BviewController。

AviewController 以模态方式呈现在 BaseViewController 上,BviewController 以模态方式呈现在 AviewController 上。

在 AviewController 中,如果我调用 [self dismissViewControllerAnimated:Completion],它会同时关闭 AviewController 和 BviewController。

在 BviewController 中,如果我调用 [self.presentingViewController dismissViewControllerAnimated:completion] 它只会关闭 BviewController。 为什么 AviewController 没有被解雇?

这个概念错了AviewController = BviewController.presentingViewController。 ?

我还尝试在 BviewContrroller 中对 AviewController 进行弱引用并试图将其关闭。但仍然只有 BviewController 单独被解雇。 即[AviewControllerReference dismissViewControllerAnimated:completion]

我对这个概念的理解有什么错误吗?

【问题讨论】:

    标签: ios uiviewcontroller modalviewcontroller


    【解决方案1】:

    来自苹果文档:

    呈现视图控制器负责关闭视图 它呈现的控制器。 如果您在呈现的视图上调用此方法 控制器本身,它会自动将消息转发到 呈现视图控制器

    因此,您必须在呈现 VC 时调用此方法来关闭呈现的控制器。没有自己提出控制器。正如您在上面的粗体测试中看到的那样,如果您在呈现的 VC 上调用它,它会自动将该方法转发给正在呈现的 VC。

    所以回答你的问题,

    在 BViewController 上调用以下行以关闭 AViewcontrollerBViewController。 ,

    [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 
    

    这等同于在您的 BaseViewController 上调用 dismissViewController:。哪个是解雇AViewController的正确方法

    【讨论】:

    • BviewController 中的 [self.presentingViewController dismissViewControllerAnimated:completion] 怎么样?为什么这不是解雇 Aviewcontroller ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多