---
title: NSSegmentedControl
framework: appkit
role: symbol
role_heading: Class
path: appkit/nssegmentedcontrol
---

# NSSegmentedControl

Display one or more buttons in a single horizontal group.

## Declaration

```swift
class NSSegmentedControl
```

## Overview

Overview The NSSegmentedControl class uses an NSSegmentedCell class to implement much of the control’s functionality. Most methods in NSSegmentedControl are simply cover methods that call the corresponding method in NSSegmentedCell. The methods of NSSegmentedCell that do not have covers relate to accessing and setting values for tags and tooltips, programatically setting the key segment, and establishing the mode of the control. The features of a segmented control include the following: A segment can have an image, text (label), menu, tooltip, and tag. A segmented control can contain images or text, but not both. Either the control or individual segments can be enabled or disabled. Segmented controls have four tracking modes, described in NSSegmentedControl.SwitchTracking. You use these modes with the trackingMode property. Each segment can be either a fixed width or autosized to fit the contents. If a segment has text and is marked as autosizing, then the text may be truncated so that the control completely fits. If an image is too large to fit in a segment, it is clipped. If Full Keyboard Access is enabled in System Preferences > Keyboard, the keyboard may be used to move between and select segments.

## Topics

### Creating a segmented control

- [init(images:trackingMode:target:action:)](appkit/nssegmentedcontrol/init(images:trackingmode:target:action:).md)
- [init(labels:trackingMode:target:action:)](appkit/nssegmentedcontrol/init(labels:trackingmode:target:action:).md)

### Configuring the cell

- [NSSegmentedCell](appkit/nssegmentedcell.md)

### Specifying the segment behavior

- [trackingMode](appkit/nssegmentedcontrol/trackingmode.md)
- [NSSegmentedControl.SwitchTracking](appkit/nssegmentedcontrol/switchtracking.md)
- [segmentStyle](appkit/nssegmentedcontrol/segmentstyle.md)
- [NSSegmentedControl.Style](appkit/nssegmentedcontrol/style.md)

### Specifying number of segments

- [segmentCount](appkit/nssegmentedcontrol/segmentcount.md)

### Configuring the segment text

- [label(forSegment:)](appkit/nssegmentedcontrol/label(forsegment:).md)
- [setLabel(_:forSegment:)](appkit/nssegmentedcontrol/setlabel(_:forsegment:).md)
- [setAlignment(_:forSegment:)](appkit/nssegmentedcontrol/setalignment(_:forsegment:).md)
- [alignment(forSegment:)](appkit/nssegmentedcontrol/alignment(forsegment:).md)

### Configuring a segment image

- [setImage(_:forSegment:)](appkit/nssegmentedcontrol/setimage(_:forsegment:).md)
- [image(forSegment:)](appkit/nssegmentedcontrol/image(forsegment:).md)
- [setImageScaling(_:forSegment:)](appkit/nssegmentedcontrol/setimagescaling(_:forsegment:).md)
- [imageScaling(forSegment:)](appkit/nssegmentedcontrol/imagescaling(forsegment:).md)

### Configuring a segment menu

- [setMenu(_:forSegment:)](appkit/nssegmentedcontrol/setmenu(_:forsegment:).md)
- [menu(forSegment:)](appkit/nssegmentedcontrol/menu(forsegment:).md)
- [setShowsMenuIndicator(_:forSegment:)](appkit/nssegmentedcontrol/setshowsmenuindicator(_:forsegment:).md)
- [showsMenuIndicator(forSegment:)](appkit/nssegmentedcontrol/showsmenuindicator(forsegment:).md)
- [isSpringLoaded](appkit/nssegmentedcontrol/isspringloaded.md)

### Managing the selected segment

- [selectedSegment](appkit/nssegmentedcontrol/selectedsegment.md)
- [indexOfSelectedItem](appkit/nssegmentedcontrol/indexofselecteditem.md)
- [selectSegment(withTag:)](appkit/nssegmentedcontrol/selectsegment(withtag:).md)
- [setSelected(_:forSegment:)](appkit/nssegmentedcontrol/setselected(_:forsegment:).md)
- [isSelected(forSegment:)](appkit/nssegmentedcontrol/isselected(forsegment:).md)
- [selectedSegmentBezelColor](appkit/nssegmentedcontrol/selectedsegmentbezelcolor.md)
- [doubleValueForSelectedSegment](appkit/nssegmentedcontrol/doublevalueforselectedsegment.md)

### Adjusting the segment spacing

- [setWidth(_:forSegment:)](appkit/nssegmentedcontrol/setwidth(_:forsegment:).md)
- [width(forSegment:)](appkit/nssegmentedcontrol/width(forsegment:).md)
- [segmentDistribution](appkit/nssegmentedcontrol/segmentdistribution.md)
- [NSSegmentedControl.Distribution](appkit/nssegmentedcontrol/distribution.md)
- [activeCompressionOptions](appkit/nssegmentedcontrol/activecompressionoptions.md)
- [compress(withPrioritizedCompressionOptions:)](appkit/nssegmentedcontrol/compress(withprioritizedcompressionoptions:).md)
- [minimumSize(withPrioritizedCompressionOptions:)](appkit/nssegmentedcontrol/minimumsize(withprioritizedcompressionoptions:).md)

### Specifying the border shape

- [borderShape](appkit/nssegmentedcontrol/bordershape.md)
- [NSControl.BorderShape](appkit/nscontrol/bordershape.md)

### Enabling and disabling segments

- [setEnabled(_:forSegment:)](appkit/nssegmentedcontrol/setenabled(_:forsegment:).md)
- [isEnabled(forSegment:)](appkit/nssegmentedcontrol/isenabled(forsegment:).md)

### Managing tags and tooltips

- [tag(forSegment:)](appkit/nssegmentedcontrol/tag(forsegment:).md)
- [setTag(_:forSegment:)](appkit/nssegmentedcontrol/settag(_:forsegment:).md)
- [setToolTip(_:forSegment:)](appkit/nssegmentedcontrol/settooltip(_:forsegment:).md)
- [toolTip(forSegment:)](appkit/nssegmentedcontrol/tooltip(forsegment:).md)

### Instance Properties

- [role](appkit/nssegmentedcontrol/role-swift.property.md)

### Enumerations

- [NSSegmentedControl.Role](appkit/nssegmentedcontrol/role-swift.enum.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)
- [NSUserInterfaceCompression](appkit/nsuserinterfacecompression.md)
- [NSUserInterfaceItemIdentification](appkit/nsuserinterfaceitemidentification.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Controls

- [Responding to control-based events using target-action](uikit/responding-to-control-based-events-using-target-action.md)
- [NSButton](appkit/nsbutton.md)
- [NSColorWell](appkit/nscolorwell.md)
- [Combo Box](appkit/combo-box.md)
- [NSComboButton](appkit/nscombobutton.md)
- [Date Picker](appkit/date-picker.md)
- [NSImageView](appkit/nsimageview.md)
- [NSLevelIndicator](appkit/nslevelindicator.md)
- [Path Control](appkit/path-control.md)
- [NSPopUpButton](appkit/nspopupbutton.md)
- [NSProgressIndicator](appkit/nsprogressindicator.md)
- [NSRuleEditor](appkit/nsruleeditor.md)
- [NSPredicateEditor](appkit/nspredicateeditor.md)
- [Search Field](appkit/search-field.md)
- [Slider](appkit/slider.md)
