Using a Browser Delegate
NSBrowser requires a delegate to provide it with data to display. The delegate is responsible for providing the data and for setting each item as a branch or leaf node, enabled or disabled. It can also receive notification of events like scrolling and requests for validation of columns that may have changed.
You can implement one of two delegate types: Active or passive.
An active delegate creates a columnâs rows (that is, the NSBrowserCells)
itself, while a passive one leaves that job to the NSBrowser. Normally,
passive delegates are preferable, because theyâre easier to implement.
An active delegate must implement browser:createRowsForColumn: to
create the rows of the specified column. A passive delegate, on
the other hand, must implement browser:numberOfRowsInColumn: to
let the NSBrowser know how many rows to create. These two methods
are mutually exclusive; you can implement one or the other, but
not both. (The NSBrowser ascertains what type of delegate it has
by which method the delegate responds to.)
Both types of delegate implement browser:willDisplayCell:atRow:column: to
set up state (such as the cellâs string value and whether the
cell is a leaf or a branch) before an individual cell is displayed.
(This delegate method doesnât need to invoke NSBrowserCellâs setLoaded: method,
because the NSBrowser can determine that state by itself.) An active
delegate can instead set all the cellsâ state at the time the
cells are created, in which case it doesnât need to implement browser:willDisplayCell:atRow:column:. However,
a passive delegate must always implement this method.
Copyright © 2004 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2004-08-31