swift 使用modalPresentationStyle = formSheet时未调用视图(将/已)消失

30byixjq  于 2023-01-08  发布在  Swift
关注(0)|答案(1)|浏览(206)

我有一个UIViewController MainViewController,它使用modalPresentationStyle = .formSheet呈现一个SheetViewControllerSheetViewController然后使用modalPresentationStyle = .fullScreen呈现另一个ViewController。这样做会导致viewWillDisappear()SheetViewController上被调用,但不会在MainViewController上被调用。
由于我经常调用MainViewController的后端,我希望在它不可见时得到通知,这样我就可以停止这些调用。这 * 可以 * 通过使用委托来完成,但真的有可能当MainViewController在屏幕上不可见时,iOS无法直接通知它吗?

unftdfkk

unftdfkk1#

这个问题与如何操作视图层次结构有关。
如果使用modalPresentationStyle = .fullScreen呈现VC,UIKit将删除呈现控制器。
如果您使用modalPresentationStyle = .formSheet演示VC,UIKit不会删除
演示*控制器。
所以...
在MainVC中,将SheetVC显示为.formSheet ... MainVC仍在层次结构中。
在SheetVC中,将FullScreenVC表示为.fullScreen ... SheetVC是 * 表示 * 控制器,因此它从层次结构中删除了--但是MainVC仍然在原来的位置。
当您dismiss FullScreenVC时,SheetVC会再次"添加"到视图层次结构中,位于MainVC之上。

相关问题