当我使用List视图时,我可以很容易地添加refreshable
修饰符来触发刷新逻辑。我的问题是如何在使用LazyVStack时实现同样的效果。
我有以下代码:
struct TestListView: View {
var body: some View {
Text("the list view")
// WORKS:
// VStack {
// List {
// ForEach(0..<10) { n in
// Text("N = \(n)")
// }
// }
// .refreshable {
//
// }
// }
// DOES NOT SHOW REFRESH CONTROL:
ScrollView {
LazyVStack {
ForEach(0..<10) { n in
Text("N = \(n)")
}
}
}
.refreshable {
}
}
}
在LazyVStack
情况下,如何获取pull以刷新行为?
4条答案
按热度按时间u0njafvf1#
事实上,这是可能的,我想说的是,我理解苹果的想法--他们为重型
List
给予默认的内置行为,但让轻量级ScrollView
做好准备,这样我们就可以以任何我们需要的方式定制它。下面是一个解决方案的演示(使用Xcode 13.4 / iOS 15.5测试)
主要部件:
Complete test module is here
3npbholx2#
适用于iOS 16+
现在SwiftUI将
.refreshable
修饰符添加到ScrollView
。就像使用
List
一样使用它下面是文档参考
d6kp6zgx3#
基于Asperi答案:
3j86kqsm4#
只需在项目中创建文件
RefreshableScrollView
然后在项目中的任何位置使用
RefreshableScrollView
示例: