---
title: UIViewControllerRestoration
framework: uikit
role: symbol
role_heading: Protocol
path: uikit/uiviewcontrollerrestoration
---

# UIViewControllerRestoration

The methods that objects adopt so that they can act as a restoration class for view controllers during state restoration.

## Declaration

```swift
@MainActor protocol UIViewControllerRestoration
```

## Overview

Overview To use a class that adopts this protocol, you must assign that class to the restorationClass property of one of your app’s view controllers. The method in this protocol should be used to create the view controller, if it doesn’t yet exist, or return an existing view controller object, if one does exist.

## Topics

### Creating the view controller

- [viewController(withRestorationIdentifierPath:coder:)](uikit/uiviewcontrollerrestoration/viewcontroller(withrestorationidentifierpath:coder:).md)

## See Also

### Interface restoration

- [Restoring your app’s state](uikit/restoring-your-app-s-state.md)
- [Restoring your app’s state with SwiftUI](swiftui/restoring-your-app-s-state-with-swiftui.md)
- [Preserving your app’s UI across launches](uikit/preserving-your-app-s-ui-across-launches.md)
- [UIObjectRestoration](uikit/uiobjectrestoration.md)
- [UIStateRestoring](uikit/uistaterestoring.md)
