在 SwiftUI 中,如何向列表添加滚动刷新功能?
Posted
技术标签:
【中文标题】在 SwiftUI 中,如何向列表添加滚动刷新功能?【英文标题】:In SwiftUI how can I add scroll to refresh functionality to List? 【发布时间】:2020-02-07 00:41:16 【问题描述】:如果我有一个 SwiftUI 列表,它通过 API 调用从我的服务器获取其值,例如:
var body: some View
List
ForEach(viewModel.items) item in
ListItemsView(item: item)
.onAppear
self.viewModel.getAllItems()
项目数组存储在 viewModel 中的 @Published var items
func .getAllItems()
调用服务器 API,该 API 返回一个项目数组并将它们存储在 @Published var items
下
如何添加向下滑动List
并再次调用.getAllItems()
的功能,以便使用新值更新items
,并在理论上重新渲染List
?
或者有没有更好的方法来做到这一点,我没有看到?
【问题讨论】:
我面临同样的问题,因为我理解标准 SwiftUI ScrollView 不能自动滚动。需要使用自定义的ScrollView 你碰巧实现了这个吗?任何代码都会有很大帮助! 我在想,从 api 部分加载数据。假设首先加载 10 条记录,然后向下滚动加载更多 10 条记录。但是这种功能我在标准的 SwiftUI ScrollView 中找不到 【参考方案1】:在 Xcode 13 和 ios 15+ 中,您可以使用新的 refreshable()
修饰符
List(events) event in
Text(event.name)
.refreshable
print("Get New Events")
【讨论】:
【参考方案2】:这是一个将适当的 UIRefreshControl 添加到 SwiftUI 列表的表格视图的实现:https://github.com/timbersoftware/SwiftUIRefresh
【讨论】:
不,它没有添加适当的 UIRefresh 控件以上是关于在 SwiftUI 中,如何向列表添加滚动刷新功能?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 中使用 .refreshable 调用 API 并刷新列表