我有一个UIViewController MainViewController
,它使用modalPresentationStyle = .formSheet
呈现一个SheetViewController
。SheetViewController
然后使用modalPresentationStyle = .fullScreen
呈现另一个ViewController。这样做会导致viewWillDisappear()
在SheetViewController
上被调用,但不会在MainViewController
上被调用。
由于我经常调用MainViewController
的后端,我希望在它不可见时得到通知,这样我就可以停止这些调用。这 * 可以 * 通过使用委托来完成,但真的有可能当MainViewController
在屏幕上不可见时,iOS无法直接通知它吗?
1条答案
按热度按时间unftdfkk1#
这个问题与如何操作视图层次结构有关。
如果使用
modalPresentationStyle = .fullScreen
呈现VC,UIKit将删除呈现控制器。如果您使用
modalPresentationStyle = .formSheet
演示VC,UIKit不会删除演示*控制器。所以...
在MainVC中,将SheetVC显示为
.formSheet
... MainVC仍在层次结构中。在SheetVC中,将FullScreenVC表示为
.fullScreen
... SheetVC是 * 表示 * 控制器,因此它从层次结构中删除了--但是MainVC仍然在原来的位置。当您
dismiss
FullScreenVC时,SheetVC会再次"添加"到视图层次结构中,位于MainVC之上。