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 *)outlineViewchild:(NSInteger)indexofItem:(id)itemПараметры
outlineViewПредставление схемы, отправившее сообщение.
indexИндекс дочернего элемента от
itemвозвратиться.itemЭлемент в источнике данных.
Возвращаемое значение
Дочерний элемент в индексе a
item. Еслиitemnil, возвращает надлежащий дочерний элемент корневого объекта.Обсуждение
Дочерние элементы данного родителя
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 *)outlineViewisItemExpandable:(id)itemПараметры
outlineViewПредставление схемы, отправившее сообщение.
itemЭлемент в источнике данных.
Возвращаемое значение
YEStrueеслиitemможет быть расширен для отображения его дочерних элементов, иначеNOfalse.Оператор импорта
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 *)outlineViewnumberOfChildrenOfItem:(id)itemПараметры
outlineViewПредставление схемы, отправившее сообщение.
itemЭлемент в источнике данных.
Возвращаемое значение
Число дочерних элементов, охваченных
item. Еслиitemnil, этот метод должен возвратить число дочерних элементов для элемента верхнего уровня.Обсуждение
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 *)outlineViewobjectValueForTableColumn:(NSTableColumn *)tableColumnbyItem:(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 *)outlineViewsetObjectValue:(id)objectforTableColumn:(NSTableColumn *)tableColumnbyItem:(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 *)outlineViewacceptDrop:(id<NSDraggingInfo>)infoitem:(id)itemchildIndex:(NSInteger)indexПараметры
outlineViewПредставление схемы, отправившее сообщение.
outlineViewдолжно быть, ранее позволил отбрасывание.infoОбъект, содержащий больше информации об этой работе перетаскивания.
itemРодитель элемента, на который был установлен курсор, когда была отпущена кнопка мыши.
indexИндекс дочернего элемента
itemкогда кнопка мыши была отпущена, на который был установлен курсор.Возвращаемое значение
YEStrueесли работа отбрасывания была успешна, иначеNOfalse.Обсуждение
Источник данных должен включить данные от области монтажа перетаскивания в реализации этого метода. Можно получить данные для работы отбрасывания от информации с помощью
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 *)outlineViewvalidateDrop:(id<NSDraggingInfo>)infoproposedItem:(id)itemproposedChildIndex:(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 *)outlineViewnamesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestinationforDraggedItems:(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 *)outlineViewdraggingSession:(NSDraggingSession *)sessionendedAtPoint:(NSPoint)screenPointoperation:(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 *)outlineViewdraggingSession:(NSDraggingSession *)sessionwillBeginAtPoint:(NSPoint)screenPointforItems:(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 *)outlineViewpasteboardWriterForItem:(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 *)outlineViewupdateDraggingItemsForDrag:(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 *)outlineViewitemForPersistentObject:(id)objectПараметры
outlineViewПредставление схемы, отправившее сообщение.
objectЗаархивированное представление элемента в
outlineViewисточник данных.Возвращаемое значение
Разархивированное соответствие элемента
object. Если элемент является архивным объектом, этот метод может возвратить объект.Обсуждение
Когда представление схемы восстанавливает сохраненные расширенные элементы, этот метод вызывают для каждого расширенного элемента, для перевода архивного объекта в элемент представления схемы.
Специальные замечания
Необходимо реализовать этот метод при автоматическом сохранении расширенных элементов (т.е. если
autosaveExpandedItemsвозвратыYEStrue).Оператор импорта
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 *)outlineViewpersistentObjectForItem:(id)itemПараметры
outlineViewПредставление схемы, отправившее сообщение.
itemЭлемент, для которого можно возвратить архивный объект.
Возвращаемое значение
Заархивированное представление
item. Если элемент является архивным объектом, этот метод может возвратить элемент.Обсуждение
Когда представление схемы сохраняет расширенные элементы, этот метод вызывают для каждого расширенного элемента, для перевода элемента представления схемы в архивный объект.
Специальные замечания
Необходимо реализовать этот метод при автоматическом сохранении расширенных элементов (т.е. если
autosaveExpandedItemsвозвратыYEStrue).Оператор импорта
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 *)outlineViewwriteItems:(NSArray *)itemstoPasteboard:(NSPasteboard *)pboardПараметры
outlineViewПредставление схемы, вызвавшее метод.
itemsМассив элементов, участвующих в перетаскивании.
pboardОбласть монтажа, в которую можно записать данные перетаскивания.
Возвращаемое значение
YEStrueесли работа перетаскивания позволяется, иначеNOfalse.Обсуждение
Вызванный
outlineViewпосле того, как было определено, что перетаскивание должно начаться, но прежде чем было запущено перетаскивание.Для отказа от перетаскивания возвратиться
NOfalse. Для запуска перетаскивания возвратитьсяYEStrueи поместите данные перетаскивания наpboard(данные, владелец, и т.д.). Изображение перетаскивания и другое перетаскивание связанная информация будет установлена и предоставлена представлением схемы, как только этот вызов возвращается сYEStrue.Оператор импорта
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 *)outlineViewsortDescriptorsDidChange:(NSArray *)oldDescriptorsПараметры
outlineViewПредставление схемы, отправившее сообщение.
oldDescriptorsМассив, содержащий предыдущие дескрипторы.
Обсуждение
Источник данных обычно виды и перезагрузки данные, и корректирует выборы соответственно. Если необходимо знать текущие дескрипторы вида, и источник данных самостоятельно не управляет ими, можно добраться
outlineViewтекущие дескрипторы вида путем отправки ему asortDescriptorsсообщение.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.3 и позже.
Доступный как часть неофициального протокола до OS X v10.6.
