Используя делегата представления схемы
NSOutlineViewDelegate
протокол дает контроль делегата появлением отдельных ячеек в таблице по изменениям в выборе, и по редактированию ячеек.
Методы делегата, запрашивающие разрешение изменить выбор или отредактировать значение, вызываются во время пользовательских действий, влияющих на представление схемы, но не вызывающихся программируемыми изменениями в представлении. При внесении изменений программно, Вы решаете, хотите ли Вы, чтобы делегат вмешался и, если так, Вы отправляете надлежащее сообщение (проверяющий сначала, что делегат реагирует на то сообщение). Поскольку методы делегата включают фактические данные, выведенные на экран представлением схемы, делегат обычно является тем же объектом как источник данных, хотя это не требование.
NSOutlineViewDelegate
протокол определяет эти сообщения делегата:
outlineView:willDisplayCell:forTableColumn:item:
сообщает делегату, что представление схемы собирается нарисовать ячейку, указанную переданным столбцом и элементом. Делегат может изменить экземплярNSCell
если изменить атрибуты дисплея для той ячейки; например, заставляя недоступные для редактирования значения вывести на экран в курсивном или сером тексте.outlineView:shouldSelectItem:
иoutlineView:shouldSelectTableColumn:
передайте управлению делегата, может ли пользователь выбрать указанную строку или столбец (хотя пользователь может все еще переупорядочить столбцы). Это полезно для отключения указанной строки или столбца. Например, в клиентском приложении базы данных, когда пользователь редактирует запись, Вы могли бы хотеть не позволить другим пользователям выбирать ту же строку.selectionShouldChangeInOutlineView:
позволяет делегату отклонять изменение в выборе. Например, если пользователь редактирует ячейку и вводит неподходящее значение, делегат может препятствовать тому, чтобы пользователь выбрал или отредактировал любые другие ячейки, пока собственное значение не было введено в первоначальную ячейку.outlineView:shouldEditTableColumn:item:
спрашивает делегат, должно ли это хорошо отредактировать ячейку, указанную переданным столбцом и элементом. Делегат может утвердить или отклонить запрос.
NSOutlineViewDelegate
протокол определяет эти дополнительные сообщения делегата:
outlineView:shouldExpandItem:
спрашивает делегат, должно ли это хорошо расширить указанный элемент.outlineViewItemWillExpand:
сообщает делегату, что представление схемы собирается развернуть указанный элемент.outlineView:shouldCollapseItem:
спрашивает делегат, должно ли это хорошо разрушиться указанный элемент.outlineViewItemWillCollapse:
сообщает делегату, что представление схемы собирается разрушиться указанный элемент.outlineView:willDisplayOutlineCell:forTableColumn:item:
сообщает делегату, что представление схемы собирается вывести на экран ячейку, включающую символ расширения.
В дополнение к этим методам протокол делегата автоматически регистрируется для получения соответствия сообщений NSOutlineView
уведомления. Они сообщают делегату, когда выбор изменяется или собирается измениться, когда столбец перемещен или изменен, и когда элемент расширен или разрушился:
Сообщение делегата |
Уведомление |
---|---|
|
|
|
|
|
|
|
|
|
|
|