<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/View/contactAccessPicker(isPresented:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI4ViewP08ContactsB0E19contactAccessPicker11isPresented17completionHandlerQrAA7BindingVySbG_ySaySSGctF"
  },
  "title" : "contactAccessPicker(isPresented:completionHandler:)"
}
-->

# contactAccessPicker(isPresented:completionHandler:)

Modally present UI which allows the user to select which
contacts your app has access to.

```
@MainActor @preconcurrency func contactAccessPicker(isPresented: Binding<Bool>, completionHandler: @escaping ([String]) -> Void = { _ in }) -> some View
```

## Discussion

This API should only be used when your app has “Limited”
authorization.  See `CNAuthorizationStatus` and
`CNContactStore/authorizationStatus(for:)`.  The completion
handler will be invoked with an empty result if your app
doesn’t have the correct authorization status.

Your completion handler will receive an array of contact
identifiers that were newly granted to your app.  Contacts
which your app lost access to are not listed.  The
newly-available contacts can be accessed using `CNContactStore`.

Parameters:

- isPresented: The binding to whether the contact picker
  should be shown.
- completionHandler: A function to invoke when the
  management UI is dismissed.  Receives an array containing
  contact identifiers of newly-available contacts.

---

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)