I have an NSOutlineView
that is bound to a NSTreeController
. The details are like this:
- the treeController has class mode, and CommonListData as the Class Name, which has a "children" property
- the treeController also has "content array" bound to File's Owner's "headersArray" (of type
NSArray
). The "headersArray" is an array of CommonListData items - the
NSOutlineView
has bindings for "Content" to the treeController's arrangedObjects - the view-based outlineView is designed in Interface Builder, with each cell view has lots of elements. Each element (labels, images etc) have 'value' bindings to the
NSTableCellView
with the relevant objectValue.xxx model key paths
The setup is fairly simple, and it all works fine in adding and deleting objects. But the problem is that it doesn't use any of the NSOutlineView
/ NSTableView
animations when adding or removing items from the outline view. The table just reloads itself if I add or remove any element to the treeController, or directly to the headersArray's children objects. I'm not sure if that is a limitation with Cocoa Bindings or what.
In any case, I am consider whether I can disable all the bindings and do this manually. The only drawback is that the NSOutlineView
cell views have complicated elements on them, and I don't want to have to map the view elements to the data in code. Ideally it should keep the bindings in the NSTableViewCell
.
So my question is:
Is it possible to keep the bindings within Interface Builder in a NSTableCellView
, but not bind the content to the treeController? Or is there an alternative to binding "arrangedObjects", such that adding and removing data from the NSTreeController
doesn't trigger an update to the UI?
It would help to have some more control over the bindings, so that I can trigger the animations correctly, and not have it just jump around with every update.