---
title: CPBarButtonProviding
framework: carplay
role: symbol
role_heading: Protocol
path: carplay/cpbarbuttonproviding
---

# CPBarButtonProviding

The methods that templates use to provide buttons for the navigation bar.

## Declaration

```swift
protocol CPBarButtonProviding : NSObjectProtocol
```

## Overview

Overview CPBarButtonProviding is a protocol that templates use to provide a Back button and leading and trailing buttons for the navigation bar. You don’t adopt this protocol in your own types. If you want to add buttons to the navigation bar, you must use one of the prebuilt templates that already conforms to the protocol, such as CPMapTemplate or CPContactTemplate. note: The root templates of a tab bar don’t show leading or trailing bar buttons, and the system throws an exception if you attempt to assign bar buttons to the Now Playing template.

## Topics

### Providing Navigation Bar Buttons

- [backButton](carplay/cpbarbuttonproviding/backbutton.md)
- [leadingNavigationBarButtons](carplay/cpbarbuttonproviding/leadingnavigationbarbuttons.md)
- [trailingNavigationBarButtons](carplay/cpbarbuttonproviding/trailingnavigationbarbuttons.md)
- [CPBarButton](carplay/cpbarbutton.md)
- [CPMessageComposeBarButton](carplay/cpmessagecomposebarbutton.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

### Conforming Types

- [CPContactTemplate](carplay/cpcontacttemplate.md)
- [CPGridTemplate](carplay/cpgridtemplate.md)
- [CPInformationTemplate](carplay/cpinformationtemplate.md)
- [CPListTemplate](carplay/cplisttemplate.md)
- [CPMapTemplate](carplay/cpmaptemplate.md)
- [CPPointOfInterestTemplate](carplay/cppointofinteresttemplate.md)
- [CPVoiceControlTemplate](carplay/cpvoicecontroltemplate.md)

## See Also

### General Purpose Templates

- [CPListTemplate](carplay/cplisttemplate.md)
- [CPGridTemplate](carplay/cpgridtemplate.md)
- [CPTabBarTemplate](carplay/cptabbartemplate.md)
- [CPTemplate](carplay/cptemplate.md)
