SwiftUI 中的 viewWillAppear() 或其他等效项

Posted

技术标签:

【中文标题】SwiftUI 中的 viewWillAppear() 或其他等效项【英文标题】:viewWillAppear() or other equivalent in SwiftUI 【发布时间】:2021-05-17 18:16:28 【问题描述】:

我正在寻找 SwiftUI 中视图生命周期中的事件,它相当于 viewWillAppear()。 是的,我知道 SwiftUI 中有一个“.OnAppear”,但这就像 viewDidAppear。 是否有解决方法可以在加载视图之前获取特定的执行时间?

【问题讨论】:

您可以通过在存储为@StateObjectObservableObjectinit 中做某事来伪造它。您能否详细说明您的用例或使用onAppear 试图避免的情况? 需要从网络加载一些数据和图像。我会试试你的想法。谢谢 但是为什么不使用onAppear呢?加载将花费非零的时间,并且任何网络负载的返回都是异步的,所以你不会阻塞任何东西...... 首先,它当然是异步的(A Combine 的 DataTaskPublisher)。其次,为什么我需要等待视图加载?我宁愿尽快开始 GET 调用。如果要获取大量数据怎么办? 这是否回答了您的问题***.com/a/59746380/12299030? 【参考方案1】:

试试这个修饰符:

.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification))  _ in
            // your code
        

【讨论】:

以上是关于SwiftUI 中的 viewWillAppear() 或其他等效项的主要内容,如果未能解决你的问题,请参考以下文章

viewDidLoad 和 viewWillAppear 中的不同子视图布局 [重复]

显示导航栏时 viewWillAppear 中的正确 self.view.frame

在 ViewWillAppear 完成运行之前调用 CellForRowAtIndexPath

视图控制器容器偶尔会错过子控制器中的 viewWillAppear

画外音:每次加载视图时,ViewWillAppear 中的 UIAccessibilityLayoutChangedNotification 都没有将焦点设置在导航栏标题上

什么时候放入viewWillAppear,什么时候放入viewDidLoad?