---
title: PHProjectExtensionController
framework: photosui
role: symbol
role_heading: Protocol
path: photosui/phprojectextensioncontroller
---

# PHProjectExtensionController

A protocol defining the life cycle and supported types of project extensions.

## Declaration

```swift
protocol PHProjectExtensionController : NSObjectProtocol
```

## Overview

Overview The principal view controller for a Photos project extension must conform to this protocol. Methods in this protocol define the basic life cycle of the extension controller. They allow you to define any number of project types that your extension supports; the Photos app displays these project types to the user as choices when creating a new project. To enable this entry point into the extension, the Info.plist must include this key/value pair in its NSExtensionAttributes dictionary.

Once enabled, Photos asks the extension for its list of supported project types. The option that the user selects when creating a project is passed to the extension as an attribute of PHProjectInfo.

## Topics

### Tracking the Project Extension Life Cycle

- [beginProject(with:projectInfo:completion:)](photosui/phprojectextensioncontroller/beginproject(with:projectinfo:completion:).md)
- [finishProject(completionHandler:)](photosui/phprojectextensioncontroller/finishproject(completionhandler:).md)
- [resumeProject(with:completion:)](photosui/phprojectextensioncontroller/resumeproject(with:completion:).md)
- [typeDescriptionDataSource(for:invalidator:)](photosui/phprojectextensioncontroller/typedescriptiondatasource(for:invalidator:).md)

### Defining Supported Project Types

- [supportedProjectTypes](photosui/phprojectextensioncontroller/supportedprojecttypes.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### macOS Photos Project Extensions

- [Creating a Slideshow Project Extension for Photos](photokit/creating-a-slideshow-project-extension-for-photos.md)
- [PHProject](photos/phproject.md)
- [PHProjectInfo](photosui/phprojectinfo.md)
- [PHProjectExtensionContext](photosui/phprojectextensioncontext.md)
- [PHProjectElement](photosui/phprojectelement.md)
- [PHProjectSection](photosui/phprojectsection.md)
- [PHProjectRegionOfInterest](photosui/phprojectregionofinterest.md)
- [PHProjectChangeRequest](photos/phprojectchangerequest.md)
- [PHProjectCategory](photosui/phprojectcategory.md)
