---
title: "presentProfilePreferencePanel(currentSettings:availableProfiles:completion:)"
framework: tvservices
role: symbol
role_heading: Instance Method
path: "tvservices/tvusermanager/presentprofilepreferencepanel(currentsettings:availableprofiles:completion:)"
---

# presentProfilePreferencePanel(currentSettings:availableProfiles:completion:)

Presents a user-to-profile configuration panel, which lets the user specify their preferred profile.

## Declaration

```swift
func presentProfilePreferencePanel(currentSettings: [TVUserIdentifier : TVAppProfileDescriptor], availableProfiles: [TVAppProfileDescriptor], completion: @escaping @Sendable ([TVUserIdentifier : TVAppProfileDescriptor]) -> Void)
```

```swift
func presentProfilePreferencePanel(currentSettings: [TVUserIdentifier : TVAppProfileDescriptor], availableProfiles: [TVAppProfileDescriptor]) async -> [TVUserIdentifier : TVAppProfileDescriptor]
```

## Parameters

- `availableProfiles`: The complete list of app-specific profiles available in your app. The configuration panel displays this set of profiles to the user.
- `completion`: The completion handler to call when the user dismisses the configuration panel. This handler has no return value and takes the following parameter:

## 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 presentProfilePreferencePanel(currentSettings: [TVUserIdentifier : TVAppProfileDescriptor], availableProfiles: [TVAppProfileDescriptor]) async -> [TVUserIdentifier : TVAppProfileDescriptor] For information about concurrency and asynchronous code in Swift, see Calling Objective-C APIs Asynchronously. Calling this method displays a panel that lets the user configure which app-specific profile to associate with each Apple TV user account. The panel gives the user the option to select from any of the profiles in the availableProfiles parameter. It also uses the information in the existingSettings parameter to configure the initial mapping between users and profiles. After configuring the user accounts and dismissing the panel, the system calls your completion handler to deliver the updated mapping between user accounts and profiles.

## See Also

### Deprecated symbols

- [currentUserIdentifier](tvservices/tvusermanager/currentuseridentifier.md)
- [currentUserIdentifierDidChangeNotification](tvservices/tvusermanager/currentuseridentifierdidchangenotification.md)
- [shouldStorePreferenceForCurrentUser(to:completion:)](tvservices/tvusermanager/shouldstorepreferenceforcurrentuser(to:completion:).md)
- [TVAppProfileDescriptor](tvservices/tvappprofiledescriptor.md)
- [TVUserIdentifier](tvservices/tvuseridentifier.md)
- [userIdentifiersForCurrentProfile](tvservices/tvusermanager/useridentifiersforcurrentprofile.md)
