---
title: NSBrowser
framework: appkit
role: symbol
role_heading: Class
path: appkit/nsbrowser
---

# NSBrowser

An interface that displays a hierarchically organized list of data items that can be navigated and selected.

## Declaration

```swift
class NSBrowser
```

## Overview

Overview A browser displays information using a set of columns, which are indexed from left to right. Each successive column displays the next level down in the data hierarchy. This class uses the NSBrowserCell class to implement its user interface. Browsers have the following components: Columns Scroll views Matrices Browser cells To the user, browsers display data in columns and rows within each column. These components are arranged in the following component hierarchy: Browser |---Columns [1..*]     |---Scroll view        |---Matrix            |---Rows [0..*] Superclass overrides isOpaque returns true when the browser doesn’t have a title and its background color’s alpha component is 1.0; otherwise, it returns false. Protocol implementations The NSBrowser implementation of namesOfPromisedFilesDropped(atDestination:) provides the names of the files that the browser promises to create at a specified location, the result of sending browser:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:inColumn: to the delegate.

## Topics

### Configuring Browsers

- [reusesColumns](appkit/nsbrowser/reusescolumns.md)
- [maxVisibleColumns](appkit/nsbrowser/maxvisiblecolumns.md)
- [autohidesScroller](appkit/nsbrowser/autohidesscroller.md)
- [backgroundColor](appkit/nsbrowser/backgroundcolor.md)
- [minColumnWidth](appkit/nsbrowser/mincolumnwidth.md)
- [separatesColumns](appkit/nsbrowser/separatescolumns.md)
- [takesTitleFromPreviousColumn](appkit/nsbrowser/takestitlefrompreviouscolumn.md)
- [tile()](appkit/nsbrowser/tile().md)
- [delegate](appkit/nsbrowser/delegate.md)

### Managing Component Types

- [cellClass](appkit/nsbrowser/cellclass.md)
- [setCellClass(_:)](appkit/nsbrowser/setcellclass(_:).md)
- [cellPrototype](appkit/nsbrowser/cellprototype.md)

### Managing Selection Behavior

- [allowsBranchSelection](appkit/nsbrowser/allowsbranchselection.md)
- [allowsEmptySelection](appkit/nsbrowser/allowsemptyselection.md)
- [allowsMultipleSelection](appkit/nsbrowser/allowsmultipleselection.md)
- [selectedRowIndexes(inColumn:)](appkit/nsbrowser/selectedrowindexes(incolumn:).md)
- [selectRowIndexes(_:inColumn:)](appkit/nsbrowser/selectrowindexes(_:incolumn:).md)
- [allowsTypeSelect](appkit/nsbrowser/allowstypeselect.md)

### Managing Selection

- [selectedCell(inColumn:)](appkit/nsbrowser/selectedcell(incolumn:).md)
- [selectedCells](appkit/nsbrowser/selectedcells.md)
- [selectAll(_:)](appkit/nsbrowser/selectall(_:).md)
- [selectedRow(inColumn:)](appkit/nsbrowser/selectedrow(incolumn:).md)
- [selectRow(_:inColumn:)](appkit/nsbrowser/selectrow(_:incolumn:).md)
- [selectionIndexPath](appkit/nsbrowser/selectionindexpath.md)
- [selectionIndexPaths](appkit/nsbrowser/selectionindexpaths.md)

### Accessing Components

- [loadedCell(atRow:column:)](appkit/nsbrowser/loadedcell(atrow:column:).md)
- [editItem(at:with:select:)](appkit/nsbrowser/edititem(at:with:select:).md)
- [item(at:)](appkit/nsbrowser/item(at:).md)
- [item(atRow:inColumn:)](appkit/nsbrowser/item(atrow:incolumn:).md)
- [indexPath(forColumn:)](appkit/nsbrowser/indexpath(forcolumn:).md)
- [isLeafItem(_:)](appkit/nsbrowser/isleafitem(_:).md)
- [parentForItems(inColumn:)](appkit/nsbrowser/parentforitems(incolumn:).md)

### Managing the Path

- [path()](appkit/nsbrowser/path().md)
- [setPath(_:)](appkit/nsbrowser/setpath(_:).md)
- [path(toColumn:)](appkit/nsbrowser/path(tocolumn:).md)
- [pathSeparator](appkit/nsbrowser/pathseparator.md)

### Managing Columns

- [addColumn()](appkit/nsbrowser/addcolumn().md)
- [selectedColumn](appkit/nsbrowser/selectedcolumn.md)
- [lastColumn](appkit/nsbrowser/lastcolumn.md)
- [firstVisibleColumn](appkit/nsbrowser/firstvisiblecolumn.md)
- [numberOfVisibleColumns](appkit/nsbrowser/numberofvisiblecolumns.md)
- [lastVisibleColumn](appkit/nsbrowser/lastvisiblecolumn.md)
- [validateVisibleColumns()](appkit/nsbrowser/validatevisiblecolumns().md)
- [isLoaded](appkit/nsbrowser/isloaded.md)
- [loadColumnZero()](appkit/nsbrowser/loadcolumnzero().md)
- [reloadColumn(_:)](appkit/nsbrowser/reloadcolumn(_:).md)

### Accessing Column Titles

- [title(ofColumn:)](appkit/nsbrowser/title(ofcolumn:).md)
- [setTitle(_:ofColumn:)](appkit/nsbrowser/settitle(_:ofcolumn:).md)
- [isTitled](appkit/nsbrowser/istitled.md)
- [drawTitle(ofColumn:in:)](appkit/nsbrowser/drawtitle(ofcolumn:in:).md)
- [titleHeight](appkit/nsbrowser/titleheight.md)
- [titleFrame(ofColumn:)](appkit/nsbrowser/titleframe(ofcolumn:).md)

### Updating Browsers

- [noteHeightOfRowsWithIndexesChanged(_:inColumn:)](appkit/nsbrowser/noteheightofrowswithindexeschanged(_:incolumn:).md)
- [reloadData(forRowIndexes:inColumn:)](appkit/nsbrowser/reloaddata(forrowindexes:incolumn:).md)

### Scrolling

- [hasHorizontalScroller](appkit/nsbrowser/hashorizontalscroller.md)
- [scrollColumnToVisible(_:)](appkit/nsbrowser/scrollcolumntovisible(_:).md)
- [scrollColumnsLeft(by:)](appkit/nsbrowser/scrollcolumnsleft(by:).md)
- [scrollColumnsRight(by:)](appkit/nsbrowser/scrollcolumnsright(by:).md)
- [scrollRowToVisible(_:inColumn:)](appkit/nsbrowser/scrollrowtovisible(_:incolumn:).md)

### Dragging

- [setDraggingSourceOperationMask(_:forLocal:)](appkit/nsbrowser/setdraggingsourceoperationmask(_:forlocal:).md)
- [canDragRows(with:inColumn:with:)](appkit/nsbrowser/candragrows(with:incolumn:with:).md)
- [draggingImageForRows(with:inColumn:with:offset:)](appkit/nsbrowser/draggingimageforrows(with:incolumn:with:offset:).md)

### Getting Column Frames

- [frame(ofColumn:)](appkit/nsbrowser/frame(ofcolumn:).md)
- [frame(ofInsideOfColumn:)](appkit/nsbrowser/frame(ofinsideofcolumn:).md)

### Getting Row Frames

- [frame(ofRow:inColumn:)](appkit/nsbrowser/frame(ofrow:incolumn:).md)
- [getRow(_:column:for:)](appkit/nsbrowser/getrow(_:column:for:).md)

### Managing Actions

- [doubleAction](appkit/nsbrowser/doubleaction.md)
- [sendsActionOnArrowKeys](appkit/nsbrowser/sendsactiononarrowkeys.md)
- [sendAction()](appkit/nsbrowser/sendaction().md)

### Handling Mouse-Click Events

- [doClick(_:)](appkit/nsbrowser/doclick(_:).md)
- [doDoubleClick(_:)](appkit/nsbrowser/dodoubleclick(_:).md)
- [clickedColumn](appkit/nsbrowser/clickedcolumn.md)
- [clickedRow](appkit/nsbrowser/clickedrow.md)

### Sizing

- [removeSavedColumns(withAutosaveName:)](appkit/nsbrowser/removesavedcolumns(withautosavename:).md)
- [columnsAutosaveName](appkit/nsbrowser/columnsautosavename-swift.property.md)
- [NSBrowser.ColumnsAutosaveName](appkit/nsbrowser/columnsautosavename-swift.typealias.md)
- [columnContentWidth(forColumnWidth:)](appkit/nsbrowser/columncontentwidth(forcolumnwidth:).md)
- [columnWidth(forColumnContentWidth:)](appkit/nsbrowser/columnwidth(forcolumncontentwidth:).md)
- [columnResizingType](appkit/nsbrowser/columnresizingtype-swift.property.md)
- [prefersAllColumnUserResizing](appkit/nsbrowser/prefersallcolumnuserresizing.md)
- [width(ofColumn:)](appkit/nsbrowser/width(ofcolumn:).md)
- [setWidth(_:ofColumn:)](appkit/nsbrowser/setwidth(_:ofcolumn:).md)
- [defaultColumnWidth()](appkit/nsbrowser/defaultcolumnwidth().md)
- [setDefaultColumnWidth(_:)](appkit/nsbrowser/setdefaultcolumnwidth(_:).md)
- [rowHeight](appkit/nsbrowser/rowheight.md)

### Constants

- [NSBrowser.ColumnResizingType](appkit/nsbrowser/columnresizingtype-swift.enum.md)
- [NSBrowser.DropOperation](appkit/nsbrowser/dropoperation.md)
- [Application Kit Versions for NSBrowser Functionality](appkit/application-kit-versions-for-nsbrowser-functionality.md)

### Notifications

- [columnConfigurationDidChangeNotification](appkit/nsbrowser/columnconfigurationdidchangenotification.md)

### Deprecated

- [column(of:)](appkit/nsbrowser/column(of:).md)
- [matrix(inColumn:)](appkit/nsbrowser/matrix(incolumn:).md)
- [matrixClass()](appkit/nsbrowser/matrixclass().md)
- [setMatrixClass(_:)](appkit/nsbrowser/setmatrixclass(_:).md)

### Instance Methods

- [selectedCell()](appkit/nsbrowser/selectedcell().md)

### Structures

- [NSBrowser.ColumnConfigurationDidChangeMessage](appkit/nsbrowser/columnconfigurationdidchangemessage.md)

## Relationships

### Inherits From

- [NSControl](appkit/nscontrol.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSAccessibilityElementProtocol](appkit/nsaccessibilityelementprotocol.md)
- [NSAccessibilityProtocol](appkit/nsaccessibilityprotocol.md)
- [NSAnimatablePropertyContainer](appkit/nsanimatablepropertycontainer.md)
- [NSAppearanceCustomization](appkit/nsappearancecustomization.md)
- [NSCoding](foundation/nscoding.md)
- [NSDraggingDestination](appkit/nsdraggingdestination.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSStandardKeyBindingResponding](appkit/nsstandardkeybindingresponding.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [NSUserActivityRestoring](appkit/nsuseractivityrestoring.md)
- [NSUserInterfaceItemIdentification](appkit/nsuserinterfaceitemidentification.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
