2017-08-18 4 views
0

J'ai un NSTableView avec une seule colonne mais des valeurs différentes dans les sous-vues. La tableView est peuplée par NSArrayController qui est lié à une entité CoreData. Je me demandais comment trier les tableaux par les boutons personnalisés. Je sais comment faire NSArrayController pour trier les colonnes en cliquant sur l'en-tête de ligne. Mais comme je n'ai qu'une colonne mais des valeurs différentes, j'essaie de trouver un moyen de trier par des boutons personnalisés. Toute aide serait grandement appréciée.Comment trier NSTableView avec NSArrayController par programme?

+0

Avez-vous essayé de changer les descripteurs de tri? – Abizern

Répondre

1

Définissez la propriété sortDescriptors du contrôleur RAID et appelez arrayController.rearrangeObjects()

class ViewController: NSViewController { 

    @IBOutlet var arrayController: NSArrayController! 

    @IBAction func sortByName(_ sender: Any) { 
     sortArrayController(by: "name") 
    } 

    @IBAction func sortByAge(_ sender: Any) { 
     sortArrayController(by: "age") 
    } 

    func sortArrayController(by key : String) { 
     arrayController.sortDescriptors = [NSSortDescriptor(key: key, ascending: true)] 
     arrayController.rearrangeObjects() 
    } 

} 
+0

Exactement ce que je cherchais. Merci beaucoup! –

+0

Vous n'avez pas à appeler 'rearrangeObjects', le réglage' sortDescriptors' le fera. – Willeke