Если все ваши ViewController должны иметь TableView, а также RefreshControl внутри, вы можете создать один суперкласс (вы можете сохранить MyVC
) для всех этих контроллеров.
class MyVC: UIViewController {
lazy var refreshControl: UIRefreshControl = {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(refresh(_:)), for: UIControlEvents.valueChanged)
return refreshControl
}()
func addRefreshControl(to tableView: UITableView) {
if #available(iOS 10.0, *) {
tableView.refreshControl = refreshControl
} else {
tableView.addSubview(refreshControl)
}
}
@objc func refresh(_ refreshControl: UIRefreshControl) {
fetchData()
}
func fetchData() {
}
}
, а затем сделать другие ваши контроллерыподклассы MyVC
и когда вам нужно добавить RefreshControl, вызовите addRefreshControl
с TableView контроллера в качестве параметра
class MessageVC: MyVC {
@IBOutlet weak var messageTable: UITableView!
...
override func viewDidLoad() {
super.viewDidLoad()
...
addRefreshControll(to: messageTable)
}
...
override func fetchData() {
// what should happen when refresh control changes its value
}
}
... также вы можете переопределить метод fetchData
и объявить, что должно происходить при управлении обновлениемменяет значение