<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "tvOS: 16.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "DeviceDiscoveryUI",
  "identifier" : "/documentation/DeviceDiscoveryUI/DDDevicePickerViewController",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "DeviceDiscoveryUI"
    ],
    "preciseIdentifier" : "c:objc(cs)DDDevicePickerViewController"
  },
  "title" : "DDDevicePickerViewController"
}
-->

# DDDevicePickerViewController

A UIKit view that displays other devices on the network, and creates an encrypted connection to a copy of your app running on that device.

```
class DDDevicePickerViewController
```

## Overview

Always display the device picker as a full-screen, modal view. If the user selects a device, the system sets the `endpoint` property and calls the `endpointPickedHandler`.

```swift
// This example uses the default application services parameters;
// however, you can add a `NWProtocolFramer` to provide application-level messaging.
let parameters = NWParameters.applicationService

// Create the view controller for the endpoint picker.
let devicePickerController =
DDDevicePickerViewController(browseDescriptor: NWBrowser.Descriptor.applicationService(name: "MyAppService"),
                               parameters: parameters)

// Show the network device picker as a full-screen, modal view.
devicePickerController.modalTransitionStyle = .coverVertical
show(devicePickerController, sender: nil)

let endpoint: NWEndpoint
do {
    endpoint = try await devicePickerController.endpoint
} catch {
    // A person canceled the endpoint picker view.
    return
}

// Use the endpoint here.
myDeviceConnectionManager.connectTo(endpoint: endpoint)
```

## Topics

### Creating device picker view controllers

[`init(browseDescriptor:parameters:)`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/init(browseDescriptor:parameters:))

Creates a view controller that displays the available devices on your local network.

[`init(browseDescriptor:parameters:access:)`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/init(browseDescriptor:parameters:access:))

Creates a view controller with the parameters and access level you specify that displays the available devices on network.

[`initWithBrowseDescriptor:parameters:`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/initWithBrowseDescriptor:parameters:)

Creates a view controller that displays the other, available devices on your local network.

### Determining device support

[`isSupported(_:using:)`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/isSupported(_:using:))

Returns a Boolean value that indicates whether the current device supports device discovery.

[`isSupportedForBrowseDescriptor:parameters:`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/isSupportedForBrowseDescriptor:parameters:)

Returns a Boolean value that indicates whether the current device supports device discovery.

### Accessing the selected endpoint

[`endpoint`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/endpoint)

A network connection endpoint for the device that a person selected.

[`setDevicePickerCompletionHandler:`](/documentation/DeviceDiscoveryUI/DDDevicePickerViewController/setDevicePickerCompletionHandler:)

Sets the completion handler that the system calls when the user selects a device from the picker view.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)