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

# UINavigationControllerDelegate

The interface for an object that serves as a navigation controller’s delegate.

```
@MainActor protocol UINavigationControllerDelegate : NSObjectProtocol
```

## Overview

Use a navigation controller delegate (a custom object that implements this protocol) to modify behavior when a view controller is pushed or popped from the navigation stack of a [`UINavigationController`](/documentation/UIKit/UINavigationController) object.

## Topics

### Responding to a view controller being shown

[`navigationController(_:willShow:animated:)`](/documentation/UIKit/UINavigationControllerDelegate/navigationController(_:willShow:animated:))

Notifies the delegate before the navigation controller displays a view controller’s view and navigation item properties.

[`navigationController(_:didShow:animated:)`](/documentation/UIKit/UINavigationControllerDelegate/navigationController(_:didShow:animated:))

Notifies the delegate after the navigation controller displays a view controller’s view and navigation item properties.

### Supporting custom transition animations

[`navigationController(_:animationControllerFor:from:to:)`](/documentation/UIKit/UINavigationControllerDelegate/navigationController(_:animationControllerFor:from:to:))

Allows the delegate to return a noninteractive animator object for use during view controller transitions.

[`navigationController(_:interactionControllerFor:)`](/documentation/UIKit/UINavigationControllerDelegate/navigationController(_:interactionControllerFor:))

Allows the delegate to return an interactive animator object for use during view controller transitions.

[`navigationControllerPreferredInterfaceOrientationForPresentation(_:)`](/documentation/UIKit/UINavigationControllerDelegate/navigationControllerPreferredInterfaceOrientationForPresentation(_:))

Returns the preferred orientation for presentation of the navigation controller, as determined by the delegate.

[`navigationControllerSupportedInterfaceOrientations(_:)`](/documentation/UIKit/UINavigationControllerDelegate/navigationControllerSupportedInterfaceOrientations(_:))

Returns the complete set of supported interface orientations for the navigation controller, as determined by the delegate.

### Constants

[`UINavigationController.Operation`](/documentation/UIKit/UINavigationController/Operation)

Constants that define the type of navigation controller transitions that can occur.



---

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)