Модификатор настраиваемого списка SwiftUI с UIRefreshControl - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать список в SwiftUI, который я могу перетащить до содержимого Refre sh. Я прошел через версии Custom ScrollView и UIKit, которые содержат слишком много кода, и мне не нужны сторонние пакеты. Поэтому я сделал небольшое расширение, которое совсем не работает. Но у него есть базовое c представление о том, чего я хочу достичь. Я не могу получить доступ к объекту List внутри класса.

Итак, как я могу заставить этот код работать или Есть ли лучший способ закодировать этот Refre sh Control?

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
        }
    }

}
...