How to remove all elements from NSTreeController with NSOutlineController

1k views Asked by At

I am using NSTreeController with NSOutlineController to display contents in 1parent-1child hierarchy. My structure is like this:
- parent
- child
- parent
- child

Now when user press a refresh button, I want to remove all the nodes and refill it again.

[[treeController arrangedObjects] removeAllItems];
[[treeController arrangedObjects] removeAllObjects];

but nothings seems to be working.

I guess binging NSTreeController with NSArrayController should help but I really don't know steps to bind -NSArrayController-NSTreeController-NSOutlineController.

2

There are 2 answers

0
Demitri On

From the documentation for the content property:

The value of this property can be an array of objects, or a single root object. The default value is nil.

If your content is an array (presumably an NSMutableArray), then

[treeController.content removeAllObjects];

would be appropriate. Setting it to nil removes the underlying container. If your content is a single object, then

treeController.content = nil;

is the correct choice.

1
Bill On

I do it all the time with unbound lists.

Simple to clear the list:

[treeController setContent:nil];