以您期望的方式为该列表中的元素创建List视图时onAppear:只要滚动到该元素,onAppear就会触发。但是,我正在尝试实现这样的水平列表
ScrollView(.horizontal) {
HStack(spacing: mySpacing) {
ForEach(items) { item in
MyView(item: item)
.onAppear { \\do something }
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此方法onAppear一次触发所有项目,也就是说:立即,但我想要与List视图相同的行为。我该怎么做呢?是否有手动触发 onAppear 或控制视图加载的方法?
为什么我要实现这一点:我制作了一个自定义Image视图,仅当它出现时才从 URL 加载图像(并同时替换占位符),这对于List视图来说效果很好,但我也希望它为我的水平“列表”工作。
根据 SwiftUI 2.0 (XCode 12 beta 1),这个问题最终得到了原生解决:在 a LazyHStack(或任何其他带有 Lazy 前缀的网格或堆栈)元素中,只有onAppear当它们出现在屏幕上时才会初始化(并因此触发)。
| 归档时间: |
|
| 查看次数: |
1920 次 |
| 最近记录: |