Guten Abend!
Ich habe gerade ein kleines Problem mit einem Outlineview. Die Daten werden programmatisch via Data-Source Methoden ermittelt, zu Grunde liegt aber letztendlich ein ArrayController der im XIB instantiert wurde und an den managedObjectContext gebunden ist. Der OutlineView darf unterschiedlich sortiert werden, die jeweiligen Sort-Descriptoren werden aus einer Action heraus ebenfalls programmatisch gesetzt.
Das klappt soweit auch alles wunderbar, bis der Anwender im OutlineView den Inhalt einer Zelle ändert, so dass die Sortierung nicht mehr stimmt (aus "Anton" wird "Zacharias") - der Eintrag bleibt (nachvollziehbarerweise) an der alten Stelle stehen. Im Prinzip würde ein einfaches [listController rearrangeObjects] gefolgt von [outlineView reloadData] ausreichen, und alles wäre wieder richtig sortiert, nur wo?
Ich habe mal auf NSControlTextDidEndEditingNotification gelauscht, und dort das rearrangeObjects angestoßen, das scheint aber zu früh zu sein, der listController hat zu dem Zeitpunkt die Änderung noch nicht mitbekommen. Wie macht man denn sowas richtig?
Ich habe gerade ein kleines Problem mit einem Outlineview. Die Daten werden programmatisch via Data-Source Methoden ermittelt, zu Grunde liegt aber letztendlich ein ArrayController der im XIB instantiert wurde und an den managedObjectContext gebunden ist. Der OutlineView darf unterschiedlich sortiert werden, die jeweiligen Sort-Descriptoren werden aus einer Action heraus ebenfalls programmatisch gesetzt.
Das klappt soweit auch alles wunderbar, bis der Anwender im OutlineView den Inhalt einer Zelle ändert, so dass die Sortierung nicht mehr stimmt (aus "Anton" wird "Zacharias") - der Eintrag bleibt (nachvollziehbarerweise) an der alten Stelle stehen. Im Prinzip würde ein einfaches [listController rearrangeObjects] gefolgt von [outlineView reloadData] ausreichen, und alles wäre wieder richtig sortiert, nur wo?
Ich habe mal auf NSControlTextDidEndEditingNotification gelauscht, und dort das rearrangeObjects angestoßen, das scheint aber zu früh zu sein, der listController hat zu dem Zeitpunkt die Änderung noch nicht mitbekommen. Wie macht man denn sowas richtig?