---
description: API reference for RtkControlBarButton component (iOS Library)
title: RtkControlBarButton
image: https://developers.cloudflare.com/og-docs.png
---

[Skip to content](#main-content)

> Documentation Index  
> Fetch the complete documentation index at: https://developers.cloudflare.com/realtime/llms.txt  
> Use this file to discover all available pages before exploring further.

# RtkControlBarButton

Last updated Aug 31, 2026|Copy as Markdown| [View as Markdown](https://fec4cfc0.previews.developers.cloudflare.com/realtime/realtimekit/ui-kit/api-reference/ios/rtk-control-bar-button/index.md)| [Agent setup](https://fec4cfc0.previews.developers.cloudflare.com/agent-setup/)

Base button class for control bar items. Supports normal and selected states, notification badges, and theming through appearance configuration.

## Initializer parameters

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `image` | `RtkImage` | ✅ | - | The icon image for the button |
| `title` | `String` | ❌ | `""` | The title text displayed below the icon |
| `appearance` | `RtkControlBarButtonAppearance` | ❌ | - | Appearance configuration for colors and styling |

## Properties

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `selectedStateTintColor` | `UIColor` | ❌ | - | Tint color applied when the button is in the selected state |
| `normalStateTintColor` | `UIColor` | ❌ | - | Tint color applied when the button is in the normal state |
| `notificationBadge` | `RtkNotificationBadgeView` | - | - | Badge view for displaying notification counts |

## Methods

| Method | Return Type | Description |
| --- | --- | --- |
| `setSelected(image:title:)` | `Void` | Sets the button to the selected state with a custom image and title |
| `setDefault(image:title:)` | `Void` | Sets the button to the default state with a custom image and title |

## Usage Examples

### Basic Usage

```swift
import RealtimeKitUI

let button = RtkControlBarButton(
    image: RtkImage(image: UIImage(systemName: "mic")),
    title: "Mute"
)
view.addSubview(button)
```

### With state changes

```swift
import RealtimeKitUI

let button = RtkControlBarButton(
    image: RtkImage(image: UIImage(systemName: "mic")),
    title: "Mute"
)

// Switch to selected state
button.setSelected(
    image: RtkImage(image: UIImage(systemName: "mic.slash")),
    title: "Unmute"
)

// Switch back to default state
button.setDefault(
    image: RtkImage(image: UIImage(systemName: "mic")),
    title: "Mute"
)
view.addSubview(button)
```

Was this helpful?

YesNo

## On this page

[![](https://fec4cfc0.previews.developers.cloudflare.com/_astro/logo.te5VL_aD.svg)Docs](https://fec4cfc0.previews.developers.cloudflare.com/)

```json
{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/realtime/realtimekit/ui-kit/api-reference/ios/rtk-control-bar-button/#page","headline":"RtkControlBarButton · Cloudflare Realtime docs","description":"API reference for RtkControlBarButton component (iOS Library)","url":"https://developers.cloudflare.com/realtime/realtimekit/ui-kit/api-reference/ios/rtk-control-bar-button/","inLanguage":"en","image":"https://developers.cloudflare.com/og-docs.png","dateModified":"2026-08-31","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
```
