在IOS 13之前,呈现的视图控制器用于覆盖整个屏幕.并且当解除时,执行父视图控制器viewDidAppear功能.

现在iOS 13将把视图控制器显示为一张默认表,这意味着卡将部分覆盖底层视图控制器,这意味着不会调用viewDidAppear,因为父视图控制器从未真正消失.

有通向detect that the presented view controller sheet was dismissed的路吗?我可以在父视图控制器rather than using some sort of delegate中覆盖的其他功能吗?

推荐答案

有没有一种方法可以检测到显示的视图控制器工作表已被取消?

我可以在父视图控制器中替代其他功能,而不是使用某种委托?

不是的."某种委托"就是你怎么做的.使您自己成为表示控制器的代理,并重写presentationControllerDidDismiss(_:).

https://developer.apple.com/documentation/uikit/uiadaptivepresentationcontrollerdelegate/3229889-presentationcontrollerdiddismiss


缺少一般运行时生成的事件来通知您显示的视图控制器(无论是否全屏)已被取消,这确实很麻烦;但这并不是一个新问题,因为总是有非全屏显示的视图控制器.只是现在(在iOS 13中)它们的数量更多了!我在其他地方专门就这个话题提出一个单独的问题和答案:Unified UIViewController "became frontmost" detection?.

Ios相关问答推荐

彩色进度线--SWIFT

iOS 17-在Xcode 15中添加导航控制器时,导航栏不会立即显示

在 React Native iOS 中加载多个 JS 包

在 SwiftUI 中以编程方式插入内嵌图像

在 iOS 上启用明文本地流量在 .NET MAUI 中不起作用

iOS应用程序崩溃,必需条件为false:isformatsamplerateandchannelcountvalid(format)

为什么@FetchRequest 在删除时不更新和重绘视图?

在所有 tableview / collectionview 中禁用滚动指示器

我可以在 Apple-Watch 上使用 iPhone 的摄像头扫描 SwiftUi 中的二维码(例如用于登录)吗

使用swift将图像转换为A4大小的pdf

UICollectionView - 水平滚动,水平布局?

ARKit vs. ARCore vs. Vuforia vs. D'Fusion Mobile vs. Layar SDK

SwiftUI 视图 - viewDidLoad()?

无法验证客户端 3000

从 NSUserDefaults 字典 iOS 中删除所有键

iOS 7 圆形框架按钮

Sierra 中的安全/协同设计: keys 串忽略访问控制设置和 UI 提示权限

iOS 7 半透明模态视图控制器

更新字段时,UITextField值已更改未触发

dismissModalViewController 并传回数据