【问题标题】:SwiftUI - Use .refreshable on ForEach to empower pull to refresh experienceSwiftUI - 在 ForEach 上使用 .refreshable 来增强拉动刷新体验
【发布时间】:2021-12-19 18:36:49
【问题描述】:

我正在使用新的 .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 动作。

非常感谢!

【问题讨论】:

标签: list foreach swiftui pull-to-refresh refreshable


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 2022-07-22
    • 2022-11-08
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2018-12-16
    • 2020-05-09
    • 2022-12-07
    相关资源
    最近更新 更多