Используя делегата браузера
NSBrowser требует, чтобы делегат предоставил ему данные для отображения. Делегат ответственен за предоставление данных и за установку каждого элемента как ответвление или вершина, включил или отключил. Это может также получить уведомление о событиях как прокрутка и запросы на проверку столбцов, которые, возможно, изменились.
Можно реализовать один из двух типов делегата: Активный или пассивный. В то время как пассивный оставляет то задание NSBrowser, активный делегат создает строки столбца (т.е. NSBrowserCells) сам. Обычно, пассивные делегаты предпочтительны, потому что их проще реализовать. Активный делегат должен реализовать browser:createRowsForColumn:
создать строки указанного столбца. Пассивный делегат, с другой стороны, должен реализовать browser:numberOfRowsInColumn:
сообщить NSBrowser сколько строк для создания. Эти два метода являются взаимоисключающими; можно реализовать один или другой, но не оба. (NSBrowser устанавливает, какого делегата он имеет, которым методом делегат отвечает на.)
Оба типа реализации делегата browser:willDisplayCell:atRow:column:
для установки работоспособного состояния (такого как строковое значение ячейки и является ли ячейка листом или ответвлением) перед, отдельная ячейка выведена на экран. (Этот метод делегата не должен вызывать NSBrowserCell’s setLoaded:
метод, потому что NSBrowser может определить то состояние отдельно.) Активный делегат может вместо этого установить состояние всех ячеек в то время, когда ячейки создаются, когда оно не должно реализовывать browser:willDisplayCell:atRow:column:
. Однако пассивный делегат должен всегда реализовывать этот метод.