swift - swiftUI 下拉刷新数据

标签 swift list swiftui uirefreshcontrol

我正在尝试在 SwiftUI 中开发我的第一个 IOS 应用程序,我想要一个下拉列表来刷新列表。我已经知道目前 Apple 尚未实现它,但我在 stackoverflow ( Pull down to refresh data in SwiftUI ) 上找到了以下解决方案,并且我从第一个答案开始实现了该解决方案。这很好用。

但现在我想在这个可刷新的 View 中有一个 SwiftUI View 。解决方案说我必须:

wrapping them in a UIHostingController and dropping them in makeUIView

这是我的问题。我必须做什么?我尝试了以下但它不起作用。

func makeUIView(context: Context) -> UIScrollView {
    let control = UIScrollView()
    control.refreshControl = UIRefreshControl()
    control.refreshControl?.addTarget(context.coordinator, action:
        #selector(Coordinator.handleRefreshControl),
                                      for: .valueChanged)

    // Simply to give some content to see in the app
    /*let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
    label.text = "Scroll View Content"
    control.addSubview(label)*/

    let parent = UIViewController()
    let child = UIHostingController(rootView: RecipeList())
    child.view.translatesAutoresizingMaskIntoConstraints = false
    child.view.frame = parent.view.bounds
    // First, add the view of the child to the view of the parent
    parent.view.addSubview(child.view)
    // Then, add the child to the parent
    parent.addChild(child)

    return control
}

有没有人知道我做错了什么并且可以告诉我我必须改变什么?

谢谢和最好的问候

亨里克

最佳答案

iOS 15+

struct ContentView: View {
    var body: some View {
        NavigationView {
            if #available(iOS 15.0, *) {
                List(1..<100) { row in
                    Text("Row \(row)")
                }
                .refreshable {
                    print("write your pull to refresh logic here")
                }
            } else {
                // Fallback on earlier versions
            }
        }
    }
}

关于swift - swiftUI 下拉刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676397/

相关文章:

UI 元素(标签、按钮等)的 Swift 命名约定

arrays - 创建一个类的所有对象的数组

python - 如何通过字符串将 pandas 数据框分割成 block ?

java - 使用 csv 文件作为输入参数创建 getList 方法

ios - SwiftUI - 如何在纵向模式下删除使用 SidebarListStyle 样式的 List 后面的白色背景

ios - 从小部件扩展访问核心数据

swift - TableView 单元格中的约束似乎被忽略了

python - 属性错误 : 'NoneType' object has no attribute 'append' (recursion function)

swift - EquatableView 不强制 SwiftUI 使用 == 函数的自定义实现

swift - Xcode 11 测试版 5 : "' subscript(_: )' is deprecated: See Release Notes for migration path. "