NSOutlineViewDataSource
NSOutlineView
объекты поддерживают делегата источника данных в дополнение к регулярному объекту делегата. NSOutlineViewDataSource
протокол определяет методы, которые представление схемы вызывает по мере необходимости для получения данных и информации о данных от делегата источника данных, и — дополнительно — для обновления значений данных.
Все методы в NSOutlineViewDataSource
протокол отмечен как @optional
. В то время как это - истина, существуют случаи, были Вы, должен реализовать некоторые методы для достижения требуемой функциональности, в частности при работе со стандартными источниками данных, а не данными, предоставленными привязкой Какао.
Требуемые и дополнительные методы Используя программируемые соглашения и привязку какао
При использовании стандартных источников данных для содержания, необходимо реализовать основные методы, предоставляющие представлению схемы данные: outlineView:child:ofItem:
, outlineView:isItemExpandable:
, outlineView:numberOfChildrenOfItem:
, и outlineView:objectValueForTableColumn:byItem:
. Приложения, получающие их данные с помощью привязки Какао, не должны реализовывать эти методы.
Точно так же при использовании стандартных источников данных, если Вы хотите позволить пользователю редактировать значения, необходимо реализовать outlineView:setObjectValue:forTableColumn:byItem:
. Когда эти методы вызываются представлением схемы, nil
как item
относится к «корневому» элементу. NSOutlineView
требует, чтобы каждый элемент в представлении схемы был уникален. Для разрушенного состояния представления схемы, чтобы остаться непротиворечивыми между перезагрузками необходимо всегда возвращать тот же объект для элемента. При использовании привязки Какао для обеспечения содержания представления схемы нет никакого требования для реализации этого метода.
Наследование
Не применимый
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает дочерний элемент в указанном индексе данного элемента.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, childindex
: Int, ofItemitem
: AnyObject?) -> AnyObjectObjective C
- (id)outlineView:(NSOutlineView *)
outlineView
child:(NSInteger)index
ofItem:(id)item
Параметры
outlineView
Представление схемы, отправившее сообщение.
index
Индекс дочернего элемента от
item
возвратиться.item
Элемент в источнике данных.
Возвращаемое значение
Дочерний элемент в индексе a
item
. Еслиitem
nil
, возвращает надлежащий дочерний элемент корневого объекта.Обсуждение
Дочерние элементы данного родителя
item
получены доступ последовательно. Для разрушенного состояния представления схемы, чтобы остаться непротиворечивыми, когда это перезагружается, необходимо всегда возвращать тот же объект для указанногоchild
иitem
.Специальные замечания
outlineView:child:ofItem:
метод вызывают очень часто, таким образом, это должно быть эффективно.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
См. также
-
Возвращает булево значение, указывающее, расширяем ли данный элемент.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, isItemExpandableitem
: AnyObject) -> BoolObjective C
- (BOOL)outlineView:(NSOutlineView *)
outlineView
isItemExpandable:(id)item
Параметры
outlineView
Представление схемы, отправившее сообщение.
item
Элемент в источнике данных.
Возвращаемое значение
YES
true
еслиitem
может быть расширен для отображения его дочерних элементов, иначеNO
false
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
Возвращает число дочерних элементов, охваченных данным элементом.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, numberOfChildrenOfItemitem
: AnyObject?) -> IntObjective C
- (NSInteger)outlineView:(NSOutlineView *)
outlineView
numberOfChildrenOfItem:(id)item
Параметры
outlineView
Представление схемы, отправившее сообщение.
item
Элемент в источнике данных.
Возвращаемое значение
Число дочерних элементов, охваченных
item
. Еслиitem
nil
, этот метод должен возвратить число дочерних элементов для элемента верхнего уровня.Обсуждение
outlineView:numberOfChildrenOfItem:
метод вызывают очень часто, таким образом, это должно быть эффективно.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
Вызванный
outlineView
возвратить объект данных связалось с указаннымitem
.Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, objectValueForTableColumntableColumn
: NSTableColumn?, byItemitem
: AnyObject?) -> AnyObject?Objective C
- (id)outlineView:(NSOutlineView *)
outlineView
objectValueForTableColumn:(NSTableColumn *)tableColumn
byItem:(id)item
Параметры
outlineView
Представление схемы, отправившее сообщение.
tableColumn
Столбец в
outlineView
.item
Элемент в источнике данных в указанном
tableColumn
из представления.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
outlineView (_: setObjectValue:forTableColumn:byItem:) - outlineView:setObjectValue:forTableColumn:byItem:
Установите объект данных для данного элемента в данном столбце.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, setObjectValueobject
: AnyObject?, forTableColumntableColumn
: NSTableColumn?, byItemitem
: AnyObject?)Objective C
- (void)outlineView:(NSOutlineView *)
outlineView
setObjectValue:(id)object
forTableColumn:(NSTableColumn *)tableColumn
byItem:(id)item
Параметры
outlineView
Представление схемы, отправившее сообщение.
object
Новое значение для элемента.
tableColumn
Столбец в
outlineView
.item
Элемент в источнике данных в указанном
tableColumn
из представления.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
Возвращает булево значение, указывающее, была ли работа отбрасывания успешна.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, acceptDropinfo
: NSDraggingInfo, itemitem
: AnyObject?, childIndexindex
: Int) -> BoolObjective C
- (BOOL)outlineView:(NSOutlineView *)
outlineView
acceptDrop:(id<NSDraggingInfo>)info
item:(id)item
childIndex:(NSInteger)index
Параметры
outlineView
Представление схемы, отправившее сообщение.
outlineView
должно быть, ранее позволил отбрасывание.info
Объект, содержащий больше информации об этой работе перетаскивания.
item
Родитель элемента, на который был установлен курсор, когда была отпущена кнопка мыши.
index
Индекс дочернего элемента
item
когда кнопка мыши была отпущена, на который был установлен курсор.Возвращаемое значение
YES
true
если работа отбрасывания была успешна, иначеNO
false
.Обсуждение
Источник данных должен включить данные от области монтажа перетаскивания в реализации этого метода. Можно получить данные для работы отбрасывания от информации с помощью
draggingPasteboard
метод.Возвращаемое значение указывает успешность или неуспешность работы перетаскивания к системе.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
См. также
shouldCollapseAutoExpandedItemsForDeposited:
(NSOutlineView) -
outlineView (_: validateDrop:proposedItem:proposedChildIndex:) - outlineView:validateDrop:proposedItem:proposedChildIndex:
Используемый схемой просматривают для определения допустимой цели отбрасывания.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, validateDropinfo
: NSDraggingInfo, proposedItemitem
: AnyObject?, proposedChildIndexindex
: Int) -> NSDragOperationObjective C
- (NSDragOperation)outlineView:(NSOutlineView *)
outlineView
validateDrop:(id<NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index
Параметры
outlineView
Представление схемы, отправившее сообщение.
info
Объект, содержащий больше информации об этой работе перетаскивания.
item
Предложенный родитель.
index
Предложенное дочернее расположение.
Возвращаемое значение
Значение, указывающее, который, перетаскивая работу выполнит источник данных.
Обсуждение
На основе положения мыши представление схемы предложит предложенное расположение отбрасывания. Источник данных может «перенастроить» отбрасывание при желании путем вызова
setDropItem:dropChildIndex:
и возврат чего-то другого, чемNSDragOperationNone
. Можно принять решение перенастроить по различным причинам (например, по лучшей визуальной обратной связи при вставке в сортированную позицию).Реализация этого метода является дополнительной.
Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
outlineView (_: namesOfPromisedFilesDroppedAtDestination:forDraggedItems:) - outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:
Возвращает массив имен файлов для создаваемых файлов, которые получатель обещает создать.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, namesOfPromisedFilesDroppedAtDestinationdropDestination
: NSURL, forDraggedItemsitems
: [AnyObject]) -> [AnyObject]Objective C
- (NSArray *)outlineView:(NSOutlineView *)
outlineView
namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination
forDraggedItems:(NSArray *)items
Параметры
outlineView
Представление схемы, отправившее сообщение.
dropDestination
Расположение отбрасывания, где создаются файлы.
items
Перетаскиваемые элементы.
Возвращаемое значение
Массив имен файлов (не полные пути) для создаваемых файлов, которые получатель обещает создать.
Обсуждение
Для получения дополнительной информации о файле обещайте перетащить, см. документацию относительно
NSDraggingSource
протокол иnamesOfPromisedFilesDroppedAtDestination:
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.4 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
outlineView (_: draggingSession:endedAtPoint:operation:) - outlineView:draggingSession:endedAtPoint:operation:
ТребуемыйРеализуйте этот метод для знания, когда закончится данное перетаскивание сеанса. (требуемый)
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, draggingSessionsession
: NSDraggingSession, endedAtPointscreenPoint
: NSPoint, operationoperation
: NSDragOperation)Objective C
- (void)outlineView:(NSOutlineView *)
outlineView
draggingSession:(NSDraggingSession *)session
endedAtPoint:(NSPoint)screenPoint
operation:(NSDragOperation)operation
Параметры
outlineView
Представление схемы, в котором началось перетаскивание.
session
Закончившийся сеанс перетаскивания.
screenPoint
Точка на экране, в которой закончилось перетаскивание.
operation
Маска, указывающая типы операций перетаскивания, разрешена источником перетаскивания.
Обсуждение
Можно реализовать этот дополнительный метод делегата знать, когда исходная работа перетаскивания закончилась в определенном расположении, таком как мусор (путем проверки на работу
NSDragOperationDelete
).Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.7 и позже.
-
outlineView (_: draggingSession:willBeginAtPoint:forItems:) - outlineView:draggingSession:willBeginAtPoint:forItems:
ТребуемыйРеализация, которую знает этот метод, когда данное перетаскивание сеанса собирается начаться и потенциально изменить сеанс перетаскивания. (требуемый)
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, draggingSessionsession
: NSDraggingSession, willBeginAtPointscreenPoint
: NSPoint, forItemsdraggedItems
: [AnyObject])Objective C
- (void)outlineView:(NSOutlineView *)
outlineView
draggingSession:(NSDraggingSession *)session
willBeginAtPoint:(NSPoint)screenPoint
forItems:(NSArray *)draggedItems
Параметры
outlineView
Представление схемы, в котором перетаскивание собирается начаться.
session
Сеанс перетаскивания, собирающийся начаться.
screenPoint
Точка на экране, в которой должно начаться перетаскивание.
draggedItems
Массив тот, элементов, которые будут перетащены, исключая элементы, для который
outlineView:pasteboardWriterForItem:
возвратыnil
.Обсуждение
draggedItems
выстройте непосредственно соответствует, массив писателя области монтажа раньше начинал сеанс перетаскивания сNSView
методbeginDraggingSessionWithItems:event:source:
. Следовательно, порядок детерминирован, и может использоваться вoutlineView:acceptDrop:item:childIndex:
при перечисленииNSDraggingInfo
классы области монтажа протокола.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.7 и позже.
-
Реализуйте этот метод, чтобы позволить таблице быть
NSDraggingSource
это поддерживает перетаскивающие многократные элементы. (требуемый)Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, pasteboardWriterForItemitem
: AnyObject?) -> NSPasteboardWriting!Objective C
- (id<NSPasteboardWriting>)outlineView:(NSOutlineView *)
outlineView
pasteboardWriterForItem:(id)item
Параметры
outlineView
Представление схемы, в котором начинается перетаскивание.
item
Элемент, для которого можно возвратить писателя области монтажа.
Возвращаемое значение
Реализующий пользовательский объект
NSPasteboardWriting
протокол (или просто используютNSPasteboardItem
).Обсуждение
Если этот метод реализован, то
outlineView:writeItems:toPasteboard:
не вызывается.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.7 и позже.
-
Реализуйте этот метод, чтобы позволить таблице обновить элементы перетаскивания, когда они перетаскиваются по представлению. (требуемый)
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, updateDraggingItemsForDragdraggingInfo
: NSDraggingInfo)Objective C
- (void)outlineView:(NSOutlineView *)
outlineView
updateDraggingItemsForDrag:(id<NSDraggingInfo>)draggingInfo
Параметры
outlineView
Представление схемы, в котором происходит перетаскивание.
draggingInfo
Информационный объект перетаскивания.
Обсуждение
Реализация этого метода требуется для перетаскивания мультиизображения. Типичная реализация вызывает переданный - в перетаскивании информационного объекта
enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:
метод и наборы элемент перетаскиванияimageComponentsProvider
свойство к надлежащему изображению на основе содержания. Для находящихся в NSView табличных представлений можно использоватьNSTableCellView
методdraggingImageComponents
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.7 и позже.
-
Вызванный
outlineView
возвратить элемент для заархивированногоobject
.Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, itemForPersistentObjectobject
: AnyObject) -> AnyObject!Objective C
- (id)outlineView:(NSOutlineView *)
outlineView
itemForPersistentObject:(id)object
Параметры
outlineView
Представление схемы, отправившее сообщение.
object
Заархивированное представление элемента в
outlineView
источник данных.Возвращаемое значение
Разархивированное соответствие элемента
object
. Если элемент является архивным объектом, этот метод может возвратить объект.Обсуждение
Когда представление схемы восстанавливает сохраненные расширенные элементы, этот метод вызывают для каждого расширенного элемента, для перевода архивного объекта в элемент представления схемы.
Специальные замечания
Необходимо реализовать этот метод при автоматическом сохранении расширенных элементов (т.е. если
autosaveExpandedItems
возвратыYES
true
).Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
Вызванный
outlineView
возвратить архивный объект дляitem
.Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, persistentObjectForItemitem
: AnyObject?) -> AnyObject!Objective C
- (id)outlineView:(NSOutlineView *)
outlineView
persistentObjectForItem:(id)item
Параметры
outlineView
Представление схемы, отправившее сообщение.
item
Элемент, для которого можно возвратить архивный объект.
Возвращаемое значение
Заархивированное представление
item
. Если элемент является архивным объектом, этот метод может возвратить элемент.Обсуждение
Когда представление схемы сохраняет расширенные элементы, этот метод вызывают для каждого расширенного элемента, для перевода элемента представления схемы в архивный объект.
Специальные замечания
Необходимо реализовать этот метод при автоматическом сохранении расширенных элементов (т.е. если
autosaveExpandedItems
возвратыYES
true
).Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
Возвращает булево значение, указывающее, позволяется ли работа перетаскивания.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, writeItemsitems
: [AnyObject], toPasteboardpboard
: NSPasteboard) -> BoolObjective C
- (BOOL)outlineView:(NSOutlineView *)
outlineView
writeItems:(NSArray *)items
toPasteboard:(NSPasteboard *)pboard
Параметры
outlineView
Представление схемы, вызвавшее метод.
items
Массив элементов, участвующих в перетаскивании.
pboard
Область монтажа, в которую можно записать данные перетаскивания.
Возвращаемое значение
YES
true
если работа перетаскивания позволяется, иначеNO
false
.Обсуждение
Вызванный
outlineView
после того, как было определено, что перетаскивание должно начаться, но прежде чем было запущено перетаскивание.Для отказа от перетаскивания возвратиться
NO
false
. Для запуска перетаскивания возвратитьсяYES
true
и поместите данные перетаскивания наpboard
(данные, владелец, и т.д.). Изображение перетаскивания и другое перетаскивание связанная информация будет установлена и предоставлена представлением схемы, как только этот вызов возвращается сYES
true
.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.0 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
-
Вызванный схемой просматривают, чтобы уведомить источник данных, что измененные дескрипторы и данные, возможно, должны быть обращены.
Объявление
Swift
optional func outlineView(_
outlineView
: NSOutlineView, sortDescriptorsDidChangeoldDescriptors
: [AnyObject])Objective C
- (void)outlineView:(NSOutlineView *)
outlineView
sortDescriptorsDidChange:(NSArray *)oldDescriptors
Параметры
outlineView
Представление схемы, отправившее сообщение.
oldDescriptors
Массив, содержащий предыдущие дескрипторы.
Обсуждение
Источник данных обычно виды и перезагрузки данные, и корректирует выборы соответственно. Если необходимо знать текущие дескрипторы вида, и источник данных самостоятельно не управляет ими, можно добраться
outlineView
текущие дескрипторы вида путем отправки ему asortDescriptors
сообщение.Оператор импорта
Objective C
@import AppKit;
Swift
import AppKit
Доступность
Доступный в OS X v10.3 и позже.
Доступный как часть неофициального протокола до OS X v10.6.