• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - PresentingViewController 如何获得通知其 PresentedViewController 自行解散?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:19:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

鉴于:

  • 呈现 ViewController B 的 ViewController A
  • ViewController B 没有对 ViewController A 的引用(除了隐含的 presentingViewController 属性)
  • ViewController B 自己调用 dismiss 并且什么也不做

我想要达到的目标:

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

限制:

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

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

  • dismiss(animated:completion according to the documentation将调用转发到它的 presentingViewController。但似乎 dismiss(animated:completionnot 调用的,而是一个私有(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



Best Answer-推荐答案


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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap