我正在尝试在SwiftUI中创建一个列表,我可以将其拖动到刷新内容。我已经遍历了太多代码的Custom ScrollView和UIKit版本,并且我不希望第三方软件包。所以我做了一个小扩展,根本没有用。但是它具有我想要实现的基本思想。我无法访问类内的List对象。
那么我该如何使此代码正常工作,或者有什么更好的方法来编写此“刷新控件”?
import UIKit
import SwiftUI
extension List {
func refresh(perform: @escaping () -> Void, isLoading: Bool) -> some View {
var view = Refresher(perform,isLoading)
return view.configureRefreshControl()
}
}
class Refresher {
var tableView: UITableView
let perform: () -> Void
var isLoading: Bool
init(_ perform: @escaping () -> Void,_ isLoading: Bool){
self.perform = perform
self.isLoading = isLoading
}
func configureRefreshControl() -> UITableView {
tableView.refreshControl = UIRefreshControl()
tableView.refreshControl?.addTarget(self, action: #selector(handleRefreshControl), for: .valueChanged)
return tableView
}
@objc func handleRefreshControl(_ tableView: UITableView) {
self.isLoading = true
// Update your content…
self.perform()
// Dismiss the refresh control.
DispatchQueue.main.async {
tableView.refreshControl?.endRefreshing()
self.isLoading = false
}
}
}