---
title: "popTemplate(animated:completion:)"
framework: carplay
role: symbol
role_heading: Instance Method
path: "carplay/cpinterfacecontroller/poptemplate(animated:completion:)"
---

# popTemplate(animated:completion:)

Removes the top-most template from the navigation hierarchy.

## Declaration

```swift
func popTemplate(animated: Bool, completion: ((Bool, (any Error)?) -> Void)? = nil)
```

```swift
func popTemplate(animated: Bool) async throws -> Bool
```

## Parameters

- `animated`: If doc://com.apple.documentation/documentation/Swift/true, CarPlay animates the transition between templates.
- `completion`: The closure CarPlay calls after it removes the template.

## Discussion

Discussion important: You can call this method from synchronous code using a completion handler, as shown on this page, or you can call it as an asynchronous method that has the following declaration: func popTemplate(animated: Bool) async throws -> Bool For information about concurrency and asynchronous code in Swift, see Calling Objective-C APIs Asynchronously. CarPlay calls completion after it removes the top-most template from the navigation hierarchy. The Boolean parameter is true if CarPlay removes the template successfully; otherwise, it’s false and CarPlay provides an error that describes the failure. CarPlay throws an exception if it can’t remove the template and you don’t provide a closure.

## See Also

### Adding and Removing Templates

- [pushTemplate(_:animated:completion:)](carplay/cpinterfacecontroller/pushtemplate(_:animated:completion:).md)
- [popToRootTemplate(animated:completion:)](carplay/cpinterfacecontroller/poptoroottemplate(animated:completion:).md)
- [pop(to:animated:completion:)](carplay/cpinterfacecontroller/pop(to:animated:completion:).md)
