I'm refreshing some UI code and have run into a serious problem with NSBrowser.
I've updated my project to use bindings. The NSBrowser is now bound to an NSTreeController (for data and selection). So far, so good.
Now I need to add a delegate to customize some features of the view. The problem is this: the NSBrowser delegate can be implemented two different ways. The olde way, where you implement either -browser:numberOfRowsInColumn: or -browser:createRowsForColumn:inMatrix:, or you can use the "new" way where you implement a family of data source methods starting with -browser:numberOfChildrenOfItem:, -browser:child:ofItem:, and so on.
My problem is that I don't need/want to implement any of these methods, but I have to or NSBrowser won't recognize my object as a delegate.
I don't want to implement the old methods, because as soon as you do certain features of NSBrowser stop working and will throw an exception that says "is not supported for browsers with matrix delegates". Most notably, pressing the right arrow in the view, or calling a method like -itemAtRow:inColumn:.
Alternatively, if I try to implement any of the "new" methods, my NSTreeController stops supplying data to the browser.
But if I don't implement something, the NSBrowser doesn't recognize my object as a browser delegate and it refuses to send any of the other delegate message, like -browser:selectionIndexesForProposedSelection:inColumn:, -browser:shouldSizeColumn:forUserResize:, and -browser:willDisplayCell:atRow:column:, all of which I desperately need.