2017-08-14 2 views
-1

Ici, dans le code suivant, un TableViewController est créé et ses propriétés tableView et refreshControl sont définies. Toutefois, même sans ajouter TableViewController en tant que sous-vue à la vue View Controller, le contrôle d'actualisation commence à fonctionner. Était curieux de savoir comment cela se passe?Actualiser Le contrôle défini sur TableViewController fonctionne même sans l'ajouter comme vue secondaire

@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

Pourquoi initialize-vous une autre 'UITableViewController'? Cela devrait suffire si vous faites 'dashBoardTableView.refreshControl = refreshControl'. – kchromik

+0

@kchromik dashBoardTableView est une sous-classe de UITableView et n'a pas de propriété refreshControl. – Vaquita

Répondre

1

Il est très probable que le développeur Apple a fait une telle chose dans UITableViewController:

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

Ainsi, le RefreshController fonctionne immédiatement après: tableViewContainerVC.refreshControl = refreshControl