刷新控制设置为TableViewController即使没有将其添加为子视图
问题描述:
这里在下面的代码中,创建一个TableViewController并且它的tableView和refreshControl属性被设置。但是,即使没有将TableViewController作为子视图添加到View Controller视图,刷新控件也会开始工作。很好奇这是怎么发生的?刷新控制设置为TableViewController即使没有将其添加为子视图
@IBOutlet weak var dashBoardTableView: UITableView!
let refreshControl = UIRefreshControl()
func configureRefreshControl()
{
refreshControl.addTarget(self, action: #selector(self.pullToRefresh) , for: .valueChanged)
//UIRefreshControl will not work properly without embedding it in a UITableViewController
let tableViewContainerVC = UITableViewController()
tableViewContainerVC.tableView = dashBoardTableView
tableViewContainerVC.refreshControl = refreshControl
}
答
这很可能是苹果开发者在做这样的UITableViewController件事:
var refreshControl:UIRefreshControl {
didSet{
//......
self.tableView.tableHeaderView?.addSubview(refreshControl)
//......
}
}
所以RefreshController工作后,立即:tableViewContainerVC.refreshControl = refreshControl
你为什么初始化另一个'UITableViewController'?如果你做了'dashBoardTableView.refreshControl = refreshControl',就应该足够了。 – kchromik
@kchromik dashBoardTableView是UITableView的子类,它没有refreshControl属性。 – Vaquita