I would like to create a custom NSOutlineView where I would control the look of the items but I don’t know where to start to accomplish this. Also, can I use a custom NSView as an item? Where can I find some info/tutorial/code sample to learn how to do this? Do I have to create my own custom view or I can start with NSOutlineView and tell it how to display its items?
Subclass NSCell, override its drawWithFrame method to do your custom drawing, and do a setDataCell on the table column in which you want the custom cell to be located.
Do I need to set a NSCell for every item? If so, where/when do I use setDataCell?
You should call setDataCell: on the NSTableColumn which you want to modify. NSTableView (and therefore NSOutlineView as well) uses a single NSCell to draw each row in a column. So, you just have to give the column in question an instance of the NSCell you want it to use. You can access the relavent table column using:
NSTableColumn *column = outlineView tableColumns] objectAtIndex:0] // or whatever index you need
or, you can use:
[[NSTableColumn *column = [outlineView tableColumnWithIdentifier:@”yourIdentifierHere”]; // change the identifier appropriately
I hope that helps!