+3  A: 

Whenever you check a box, check to see if all its siblings are checked. If so, check the parent. (And run the check again on that level.)

To do that... well, your NSOutlineView has a data source, right? Something that's telling it what to display? Well, in the method called by the checkbox when it's clicked (whatever you set that up to be), get the parent object behind the row which was clicked, and then update its status. If you don't have a direct reference to the checkbox from the model, you can use -[NSOutlineView parentForItem:] to find it.

Hopefully that gives you enough to get started. If it doesn't, then you'll need to ask a more specific question, detailing exactly which parts you're having trouble with.

BJ Homer
How would I do that?
Joshua
How would I make it display a line instead of a check?
Joshua
[checkbox setState:NSMixedState];
Abizern
[NSButtonCell setState:]. Options are NSOnState, NSOffState, and NSMixedState. If the cell supports only two states and you specify NSMixedState, setState sets the state to NSOnState. (From the apple documentation.) Note that you have to allow mixed state, either in IB or with setAllowsMixedState:
BJ Homer
Is there possibly a Web page or tutorial where I can find out more about this?
Joshua
For learning about outline views: http://developer.apple.com/documentation/Cocoa/Conceptual/OutlineView/OutlineView.htmlFor learning about NSButtonCell: http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/Reference/Reference.html and http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/Button/Button.html.(I simply googled "NSButtonCell" and "NSOutlineView" to find those results.)
BJ Homer
What code would I need to make it check to see if the parents childrens checkbox's are checked?
Joshua
That depends entirely on how you've got your program structured. I'm trying to be helpful, but you're asking such vague questions that I get the feeling you're not doing any exploration or research on your own. You'll need to go through the sibling checkboxes one by one and read their current state, then make a decision based upon that information. But I have no way of knowing how you'd do that, since I'm not writing this program. (Moreover, I don't intend to be writing this program.) Play around a bit. See what you can make happen on your own for a while.
BJ Homer
Ok, thanks for the help!
Joshua