I have an NSOutlineView
that is bound to a NSTreeController
. The details are like this:
NSArray
). The "headersArray" is an array of CommonListData itemsNSOutlineView
has bindings for "Content" to the treeController's arrangedObjectsNSTableCellView
with the relevant objectValue.xxx model key pathsThe 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.
I believe the bindings of the views within the cell view are independent of the bindings of the outline view's content. Whether the outline view uses bindings or not, it eventually sets the objectValue
property of the cell view. So long as that's done in a KVO-compliant manner (which it is), any bindings to that property will work.