<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "tvOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UITabBarControllerDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(pl)UITabBarControllerDelegate"
  },
  "title" : "UITabBarControllerDelegate"
}
-->

# UITabBarControllerDelegate

A set of methods you implement to customize the behavior of a tab bar.

```
@MainActor protocol UITabBarControllerDelegate : NSObjectProtocol
```

## Overview

You use the [`UITabBarControllerDelegate`](/documentation/UIKit/UITabBarControllerDelegate) protocol when you want to augment the behavior of a tab bar. In particular, you can use it to determine whether specific tabs should be selected, to perform actions after a tab is selected, or to perform actions before or after the user customizes the order of the tabs. After implementing these methods in your custom object, you should then assign that object to the [`delegate`](/documentation/UIKit/UITabBarController/delegate) property of the corresponding [`UITabBarController`](/documentation/UIKit/UITabBarController) object.

All of the methods in this protocol are optional. For more information on how to use and configure tab bar controllers and their delegates, see [View Controller Programming Guide for iOS](https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/index.html#//apple_ref/doc/uid/TP40007457).

## Topics

### Managing tab bar selections

[`tabBarController(_:shouldSelect:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:shouldSelect:))

Asks the delegate whether the specified view controller should be made active.

[`tabBarController(_:didSelect:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:didSelect:))

Tells the delegate that the user selected an item in the tab bar.

### Managing tab bar customizations

[`tabBarController(_:willBeginCustomizing:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:willBeginCustomizing:))

Tells the delegate that the tab bar customization sheet is about to be displayed.

[`tabBarController(_:willEndCustomizing:changed:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:willEndCustomizing:changed:))

Tells the delegate that the tab bar customization sheet is about to be dismissed.

[`tabBarController(_:didEndCustomizing:changed:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:didEndCustomizing:changed:))

Tells the delegate that the tab bar customization sheet was dismissed.

### Overriding view rotation settings

[`tabBarControllerSupportedInterfaceOrientations(_:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarControllerSupportedInterfaceOrientations(_:))

Called to allow the delegate to provide the complete set of supported interface orientations for the tab bar controller.

[`tabBarControllerPreferredInterfaceOrientationForPresentation(_:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarControllerPreferredInterfaceOrientationForPresentation(_:))

Called to allow the delegate to provide the preferred orientation for presentation of the tab bar controller.

### Supporting custom tab bar transition animations

[`tabBarController(_:animationControllerForTransitionFrom:to:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:animationControllerForTransitionFrom:to:))

Called to allow the delegate to return a [`UIViewControllerAnimatedTransitioning`](/documentation/UIKit/UIViewControllerAnimatedTransitioning) delegate object for use during a noninteractive tab bar view controller transition.

[`tabBarController(_:interactionControllerFor:)`](/documentation/UIKit/UITabBarControllerDelegate/tabBarController(_:interactionControllerFor:))

Called to allow the delegate to return a [`UIViewControllerInteractiveTransitioning`](/documentation/UIKit/UIViewControllerInteractiveTransitioning) delegate object for use during an animated tab bar transition.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)