J'ai un TableView
, et un TableViewController
Certaines vues tableView ne sont pas rechargent, comme mon délégué TableView ne reçoit pas tableView: viewFor: ligne: pour chaque ligne
Le TableView's
delegate
et datasource
sont mis à la TableViewController
Alors, quand la table va tirer, il demande au délégué des points de vue, et exécution de ce code:
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
let result = tableView.make(withIdentifier: "flagView", owner: self) as? TableCellView
case "technicalFlag", "supplyFlag":
let button = result?.control as? NSButton {
button.state = value.boolValue ? NSOnState : NSOffState
}
}
qui met à jour les boutons correctement:
Remarquez comment il y a 5 drapeaux pour risque technique
Cependant, quand je vais trier par des risques d'approvisionnement, il appelle tableView.reloadData()
Mais, pas toutes les vues se rechargées?
En conséquence, certains des drapeaux noirs restent, même quand ils ne devraient pas être (notez 8+ drapeaux noirs dans le risque technique, maintenant)
Il est apparemment aléatoire des drapeaux sont noirs (quand je regarde les données via une autre vue via le menu contextuel, je peux dire que les drapeaux devraient vraiment être noir)
donc ostensiblement, il ressemble à un problème de redécoupage. J'ai tout essayé, mais je ne peux pas obtenir ces vues à redessiner. Est-ce que je manque quelque chose?
J'ai confirmé que tableView:viewFor:row:
est tout simplement pas appelé autant de fois que je pense qu'il devrait
Je suppose que, pour résumer les choses, je pensais que l'appel reloadData()
mettra à jour toutes les vues à chaque ligne x colonne? Comment le runtime décide-t-il quelles vues obtiennent l'appel de mise à jour?
Comment avez-vous vérifier si 'tableView: viewFor: ligne:' est appelé pour chaque cellule visible? Quelles cellules sont ignorées? Quels drapeaux ont tort? La même chose se produit-elle avec la colonne Risque d'approvisionnement? Je – Willeke
imprimé déclarations du journal au début de la méthode, la même chose se produit avec l'autre colonne, et je ne suis pas sûr que les drapeaux sont mauvais, il semble un peu au hasard. Je pourrais réduire la quantité de données et essayer d'avoir une meilleure idée de ceux qui sont faux si –