刷新控制设置为TableViewController即使没有将其添加为子视图

刷新控制设置为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 
} 
+0

你为什么初始化另一个'UITableViewController'?如果你做了'dashBoardTableView.refreshControl = refreshControl',就应该足够了。 – kchromik

+0

@kchromik dashBoardTableView是UITableView的子类,它没有refreshControl属性。 – Vaquita

这很可能是苹果开发者在做这样的UITableViewController件事:

var refreshControl:UIRefreshControl { 
    didSet{ 
     //...... 
     self.tableView.tableHeaderView?.addSubview(refreshControl) 
     //...... 
    } 
} 

所以RefreshController工作后,立即:tableViewContainerVC.refreshControl = refreshControl