iOS Developer Library

Developer

UIKit Framework Reference UITabBarControllerDelegate Protocol Reference

Options
Deployment Target:

On This Page
Language:

UITabBarControllerDelegate

You use the 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 property of the corresponding 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.

Inheritance


Not Applicable

Import Statement


Swift

import UIKit

Objective-C

@import UIKit;

Availability


Available in iOS 2.0 and later.
  • Asks the delegate whether the specified view controller should be made active.

    Declaration

    Swift

    optional func tabBarController(_ tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool

    Objective-C

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

    Parameters

    tabBarController

    The tab bar controller containing viewController.

    viewController

    The view controller belonging to the tab that was tapped by the user.

    Return Value

    YEStrue if the view controller’s tab should be selected or NOfalse if the current tab should remain active.

    Discussion

    The tab bar controller calls this method in response to the user tapping a tab bar item. You can use this method to dynamically decide whether a given tab should be made the active tab.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 3.0 and later.

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

    Declaration

    Swift

    optional func tabBarController(_ tabBarController: UITabBarController, didSelectViewController viewController: UIViewController)

    Objective-C

    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

    Parameters

    tabBarController

    The tab bar controller containing viewController.

    viewController

    The view controller that the user selected. In iOS v3.0 and later, this could be the same view controller that was already selected.

    Discussion

    In iOS v3.0 and later, the tab bar controller calls this method regardless of whether the selected view controller changed. In addition, it is called only in response to user taps in the tab bar and is not called when your code changes the tab bar contents programmatically.

    In versions of iOS prior to version 3.0, this method is called only when the selected view controller actually changes. In other words, it is not called when the same view controller is selected. In addition, the method was called for both programmatic and user-initiated changes to the selected view controller.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 2.0 and later.

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

    Declaration

    Swift

    optional func tabBarController(_ tabBarController: UITabBarController, willBeginCustomizingViewControllers viewControllers: [AnyObject])

    Objective-C

    - (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers

    Parameters

    tabBarController

    The tab bar controller that is being customized.

    viewControllers

    The view controllers to be displayed in the customization sheet. This list typically contains all custom view controllers you added but does not include some standard controllers, such as the one that manages the More tab.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 3.0 and later.

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

    Declaration

    Swift

    optional func tabBarController(_ tabBarController: UITabBarController, willEndCustomizingViewControllers viewControllers: [AnyObject], changed changed: Bool)

    Objective-C

    - (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed

    Parameters

    tabBarController

    The tab bar controller that is being customized.

    viewControllers

    The view controllers of the tab bar controller. The arrangement of the controllers in the array represents the new display order within the tab bar.

    changed

    A Boolean value indicating whether items changed on the tab bar. YEStrue if items changed or NOfalse if they did not.

    Discussion

    This method is called in response to the user tapping the Done button on the sheet but before the sheet is dismissed.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 3.0 and later.

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

    Declaration

    Swift

    optional func tabBarController(_ tabBarController: UITabBarController, didEndCustomizingViewControllers viewControllers: [AnyObject], changed changed: Bool)

    Objective-C

    - (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed

    Parameters

    tabBarController

    The tab bar controller that is being customized.

    viewControllers

    The view controllers of the tab bar controller. The arrangement of the controllers in the array represents the new display order within the tab bar.

    changed

    A Boolean value indicating whether items changed on the tab bar. YEStrue if items changed or NOfalse if they did not.

    Discussion

    You can use this method to respond to changes to the order of tabs in the tab bar.

    Import Statement

    Objective-C

    @import UIKit;

    Swift

    import UIKit

    Availability

    Available in iOS 2.0 and later.