---
title: UINavigationControllerDelegate
framework: uikit
role: symbol
role_heading: Protocol
path: uikit/uinavigationcontrollerdelegate
---

# UINavigationControllerDelegate

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

## Declaration

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

## Overview

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 object.

## Topics

### Responding to a view controller being shown

- [navigationController(_:willShow:animated:)](uikit/uinavigationcontrollerdelegate/navigationcontroller(_:willshow:animated:).md)
- [navigationController(_:didShow:animated:)](uikit/uinavigationcontrollerdelegate/navigationcontroller(_:didshow:animated:).md)

### Supporting custom transition animations

- [navigationController(_:animationControllerFor:from:to:)](uikit/uinavigationcontrollerdelegate/navigationcontroller(_:animationcontrollerfor:from:to:).md)
- [navigationController(_:interactionControllerFor:)](uikit/uinavigationcontrollerdelegate/navigationcontroller(_:interactioncontrollerfor:).md)
- [navigationControllerPreferredInterfaceOrientationForPresentation(_:)](uikit/uinavigationcontrollerdelegate/navigationcontrollerpreferredinterfaceorientationforpresentation(_:).md)
- [navigationControllerSupportedInterfaceOrientations(_:)](uikit/uinavigationcontrollerdelegate/navigationcontrollersupportedinterfaceorientations(_:).md)

### Constants

- [UINavigationController.Operation](uikit/uinavigationcontroller/operation.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Customizing the navigation interface behavior

- [delegate](uikit/uinavigationcontroller/delegate.md)
