SwiftUI 中的 viewWillAppear() 或其他等效项
Posted
技术标签:
【中文标题】SwiftUI 中的 viewWillAppear() 或其他等效项【英文标题】:viewWillAppear() or other equivalent in SwiftUI 【发布时间】:2021-05-17 18:16:28 【问题描述】:我正在寻找 SwiftUI 中视图生命周期中的事件,它相当于 viewWillAppear()。 是的,我知道 SwiftUI 中有一个“.OnAppear”,但这就像 viewDidAppear。 是否有解决方法可以在加载视图之前获取特定的执行时间?
【问题讨论】:
您可以通过在存储为@StateObject
的ObservableObject
的init
中做某事来伪造它。您能否详细说明您的用例或使用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 都没有将焦点设置在导航栏标题上