NSOutlineView
is a subclass of NSTableView
. And currently, NSTableView
supports two implementations.
- Cell-based.
- View-based.
To make OSX 10.8 Finder style side bar (with automatic gray Icon styling), need to use view-based table view with source-list highlight style.
With NIBs, this is typical job. Nothing hard. (see SidebarDemo) But I want to avoid any NIBs or Interface Builder. I want make the side bar purely programmatically.
In this case, I have big problem. AFAIK, there's no way to supply prototype view for specific cell. When I open .xib
file, I see <tableColumn>
is containing <prototypeCellViews>
. And this specifies what view will be used for the column. I can't find how to set this programmatically using public API.
As a workaround, I tried to make cell manually using -[NSTableView makeViewWithIdentifier:owner:]
and -[NSTableView viewAtColumn:row:makeIfNecessary:]
, but none of them returns view instance. I created a NSTableCellView
, but it doesn't have image-view and text-field instances. And I also tried to set them, but the fields are marked as assign
so the instances deallocated immediately. I tried to keep it by forcing retaining them, but it doesn't work. NSTableView
doesn't manage them, so I am sure that table view don't like my implementation.
I believe there's a property to set this prototype-view for a column. But I can't find them. Where can I find the property and make system-default NSOutlineView
with source-list style programmatically?