---
title: NSOutlineViewDelegate
framework: appkit
role: symbol
role_heading: Protocol
path: appkit/nsoutlineviewdelegate
---

# NSOutlineViewDelegate

A set of optional methods implemented by delegates of NSOutlineView objects.

## Declaration

```swift
protocol NSOutlineViewDelegate : NSControlTextEditingDelegate
```

## Topics

### Expanding and Collapsing the Outline

- [outlineView(_:shouldExpandItem:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldexpanditem:).md)
- [outlineView(_:shouldCollapseItem:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldcollapseitem:).md)

### Supporting Type Select

- [outlineView(_:typeSelectStringFor:item:)](appkit/nsoutlineviewdelegate/outlineview(_:typeselectstringfor:item:).md)
- [outlineView(_:nextTypeSelectMatchFromItem:toItem:for:)](appkit/nsoutlineviewdelegate/outlineview(_:nexttypeselectmatchfromitem:toitem:for:).md)
- [outlineView(_:shouldTypeSelectFor:withCurrentSearch:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldtypeselectfor:withcurrentsearch:).md)

### Working with Tooltips

- [outlineView(_:toolTipFor:rect:tableColumn:item:mouseLocation:)](appkit/nsoutlineviewdelegate/outlineview(_:tooltipfor:rect:tablecolumn:item:mouselocation:).md)

### Handling Selection

- [outlineView(_:shouldSelect:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldselect:).md)
- [outlineView(_:shouldSelectItem:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldselectitem:).md)
- [outlineView(_:selectionIndexesForProposedSelection:)](appkit/nsoutlineviewdelegate/outlineview(_:selectionindexesforproposedselection:).md)
- [selectionShouldChange(in:)](appkit/nsoutlineviewdelegate/selectionshouldchange(in:).md)
- [outlineViewSelectionIsChanging(_:)](appkit/nsoutlineviewdelegate/outlineviewselectionischanging(_:).md)
- [outlineViewSelectionDidChange(_:)](appkit/nsoutlineviewdelegate/outlineviewselectiondidchange(_:).md)

### Displaying Cells

- [outlineView(_:willDisplayCell:for:item:)](appkit/nsoutlineviewdelegate/outlineview(_:willdisplaycell:for:item:).md)
- [outlineView(_:willDisplayOutlineCell:for:item:)](appkit/nsoutlineviewdelegate/outlineview(_:willdisplayoutlinecell:for:item:).md)
- [outlineView(_:dataCellFor:item:)](appkit/nsoutlineviewdelegate/outlineview(_:datacellfor:item:).md)
- [outlineView(_:shouldShowOutlineCellForItem:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldshowoutlinecellforitem:).md)
- [outlineView(_:shouldShowCellExpansionFor:item:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldshowcellexpansionfor:item:).md)

### Moving and Resizing Columns

- [outlineView(_:shouldReorderColumn:toColumn:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldreordercolumn:tocolumn:).md)

### Working with the Outline Column

- [outlineViewColumnDidMove(_:)](appkit/nsoutlineviewdelegate/outlineviewcolumndidmove(_:).md)
- [outlineViewColumnDidResize(_:)](appkit/nsoutlineviewdelegate/outlineviewcolumndidresize(_:).md)
- [outlineViewItemWillExpand(_:)](appkit/nsoutlineviewdelegate/outlineviewitemwillexpand(_:).md)
- [outlineViewItemDidExpand(_:)](appkit/nsoutlineviewdelegate/outlineviewitemdidexpand(_:).md)
- [outlineViewItemWillCollapse(_:)](appkit/nsoutlineviewdelegate/outlineviewitemwillcollapse(_:).md)
- [outlineViewItemDidCollapse(_:)](appkit/nsoutlineviewdelegate/outlineviewitemdidcollapse(_:).md)

### Editing Items

- [outlineView(_:shouldEdit:item:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldedit:item:).md)

### Working with Table Columns

- [outlineView(_:mouseDownInHeaderOf:)](appkit/nsoutlineviewdelegate/outlineview(_:mousedowninheaderof:).md)
- [outlineView(_:didClick:)](appkit/nsoutlineviewdelegate/outlineview(_:didclick:).md)
- [outlineView(_:didDrag:)](appkit/nsoutlineviewdelegate/outlineview(_:diddrag:).md)

### Customizing Column and Row Sizes

- [outlineView(_:heightOfRowByItem:)](appkit/nsoutlineviewdelegate/outlineview(_:heightofrowbyitem:).md)
- [outlineView(_:sizeToFitWidthOfColumn:)](appkit/nsoutlineviewdelegate/outlineview(_:sizetofitwidthofcolumn:).md)

### Customizing Tint Color

- [outlineView(_:tintConfigurationForItem:)](appkit/nsoutlineviewdelegate/outlineview(_:tintconfigurationforitem:).md)
- [NSTintConfiguration](appkit/nstintconfiguration.md)

### Customizing Tracking Support

- [outlineView(_:shouldTrackCell:for:item:)](appkit/nsoutlineviewdelegate/outlineview(_:shouldtrackcell:for:item:).md)

### Grouping Rows

- [outlineView(_:isGroupItem:)](appkit/nsoutlineviewdelegate/outlineview(_:isgroupitem:).md)

### Working with NSView-Based Outline Views

- [outlineView(_:didAdd:forRow:)](appkit/nsoutlineviewdelegate/outlineview(_:didadd:forrow:).md)
- [outlineView(_:didRemove:forRow:)](appkit/nsoutlineviewdelegate/outlineview(_:didremove:forrow:).md)
- [outlineView(_:rowViewForItem:)](appkit/nsoutlineviewdelegate/outlineview(_:rowviewforitem:).md)
- [outlineView(_:viewFor:item:)](appkit/nsoutlineviewdelegate/outlineview(_:viewfor:item:).md)

### Changing Visibility

- [outlineView(_:userCanChangeVisibilityOf:)](appkit/nsoutlineviewdelegate/outlineview(_:usercanchangevisibilityof:).md)
- [outlineView(_:userDidChangeVisibilityOf:)](appkit/nsoutlineviewdelegate/outlineview(_:userdidchangevisibilityof:).md)

## Relationships

### Inherits From

- [NSControlTextEditingDelegate](appkit/nscontroltexteditingdelegate.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Management

- [NSOutlineViewDataSource](appkit/nsoutlineviewdatasource.md)
