0

我正在使用新的 .refreshable() 函数。出于测试目的,我有这个简单的睡眠功能:

     func load() async {
         await Task.sleep(2 * 1_000_000_000)
     }

将此附加到列表中可以正常工作:

        .refreshable {
            await load()
        }

但是:当我尝试将它与 ForEach 循环一起使用时,它不起作用。你知道如何克服这个问题吗?背景:我需要 ForEach 来确保自定义样式。在列表中我太有限了。我已经尝试使用一些属性来设置它的样式,例如

.buttonStyle(.plain)
.listRowSeparator(.hidden)

但我无法移除徽章或蓝色距离以及影响列表对象之间的间距。

在此处输入图像描述

如果您能告诉我您对此的想法,那就太好了。我想避免用协调器等建立自己的拉动来刷新视图,就像在 SwiftUI 2.0 中所做的那样:D 真的很喜欢 .refreshable 动作。

非常感谢!

4

1 回答 1

0

如果您想refreshable在 之外List的任何东西上使用,则由您为其提供用户界面。文档只说它适用refreshableList

当您将此修改器应用于视图时,您将refresh视图环境中的值设置为指定的操作。检测到此操作的控件可以更改其外观并为用户提供执行刷新的方法。

当您在 iOS 和 iPadOS 上将此修饰符应用于 aList时,该列表为用户提供了一种刷新内容的标准方式。当用户向下拖动可滚动内容区域的顶部时,视图会显示一个刷新控件并执行提供的操作。在操作中使用 await 表达式来刷新数据。刷新指示器在等待操作期间保持可见。

于 2021-11-05T23:23:25.317 回答