gpt4 book ai didi

ios - PresentingViewController 如何收到其 PresentedViewController 自行关闭的通知?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:08 26 4
gpt4 key购买 nike

给定:

  • 呈现 ViewController B 的 ViewController A
  • ViewController B 没有引用 ViewController A(隐含的 presentingViewController 属性除外)
  • ViewController B 调用 dismiss 并且什么都不做

我想要实现的目标:

  • ViewController A 想知道 ViewController B 何时被解雇以清理某些状态

限制:

  • 我不想使用 KVO
  • 我不想以任何方式修改 ViewController B 或其行为

到目前为止我发现了什么:

  • 解散(动画:完成:) according to the documentation将调用转发给它的 presentingViewController。但似乎 dismiss(animated:completion:) 调用,而是一个私有(private)方法 _performCoordinatedPresentOrDismiss:animated:
  • iOS documentation on presentingViewController具有误导性。它说“呈现的 View Controller 将此属性设置为呈现它的 View Controller ”,但事实并非如此。在 iOS 11 中,这将始终指向 present 被调用的 VC 的根父 VC。同样的 documentation on presentedViewController具有误导性。它说“调用该方法的 View Controller 将此属性设置为它呈现的 View Controller ”,这不是全部。调用 present 的 VC 层次结构中的每个 VC(其所有父 VC 和子 VC)都将指向相同的 presentedViewController

最佳答案

在您的 Controller A 中,将其命名为 UINavigationControllerDelegate 并使用 navigationController:didShowViewController 标记 Controller B 的呈现 (isControllerBisPresented = true)。当 B 的 viewDidAppear 时,检查 isControllerBisPresented 是否为真。

关于ios - PresentingViewController 如何收到其 PresentedViewController 自行关闭的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47350720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com