Я новичок в программировании Какао (но относительно опытный с другими UI-фреймворками) и не могу точно сказать, где я ошибаюсь
следующая ситуация.
У меня есть «дерево» данных, которое упаковано в NSOutlineViewDataSource. Элементы очень простые для чтения / записи (думаю, флажки). Однако, когда
setObjectValue: (id) объект forTableColumn: (NSTableColumn *) tableColumn byItem: (id) item
При вызове
изменения, которые я делаю, влияют не только на отдельный элемент, о котором идет речь, но могут распространяться на другие элементы, т. Е. Проверка одного элемента может привести к тому, что другие элементы в дереве будут выделяться или отменяться. На уровне модели данных у меня это работает нормально. Моя проблема заключается в том, чтобы заставить контур обновиться, чтобы эти другие изменения появились в пользовательском интерфейсе.
Таким образом, в основном, когда setObjectValue вызывается, отдельная изменяемая ячейка обновляется, но мне нужно (потенциально) все дерево для обновления в пользовательском интерфейсе.
Каков наилучший практический механизм для выполнения чего-то подобного? Есть ли событие в NSOutlineView, которое я должен слушать, чтобы затем запустить обновление. Должен ли мой NSOutlineViewDataSource вызывать событие, которое прослушивает представление? Или мой основной подход совершенно неверен?
(на самом деле я делаю это с Monomac, но думаю, что любой ответ применим к какао в целом)