Contacts Framework in Swift: Making Friends with SwiftUI š«±š¾āš«²šæ
- Di Nerd Apps
- Mar 19, 2023
- 2 min read
What is the Contacts Framework in Swift?
The Contacts framework is a built-in framework in Swift that allows you to access and manage your usersā contacts. You can use the framework to retrieve and display contact information, add new contacts, and modify existing contacts.
Using the Contacts Framework in a SwiftUI App
To use the Contacts framework in a SwiftUI app, you need to add the ContactsUI framework to your project and import it into your code. You can then use the CNContactPickerViewController to display a system-provided interface for selecting a contact.
Hereās an example of how to use the Contacts framework in a SwiftUI app:
import ContactsUI
import SwiftUI
struct ContactPickerView: UIViewControllerRepresentable {
@Environment(\.presentationMode) var presentationMode
@Binding var selectedContact: CNContact?
func makeUIViewController(context: Context) -> CNContactPickerViewController {
let controller = CNContactPickerViewController()
controller.delegate = context.coordinator
return controller
}
func updateUIViewController(_ uiViewController: CNContactPickerViewController, context: Context) {}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, CNContactPickerDelegate {
var parent: ContactPickerView
init(_ parent: ContactPickerView) {
self.parent = parent
}
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
parent.selectedContact = contact
parent.presentationMode.wrappedValue.dismiss()
}
}
}
In this example, weāve created a ContactPickerView that uses the UIViewControllerRepresentable protocol to wrap the CNContactPickerViewController. The view takes a binding to a selected contact and updates it when the user selects a contact from the picker. We've also added a coordinator class that handles the delegate methods for the picker.
Customizing the Contact Picker
You can customize the appearance and behavior of the contact picker to fit your appās style and functionality. For example, you can add a title, filter out certain contact types, or change the color of the navigation bar.
Hereās an example of how to customize the contact picker:
func makeUIViewController(context: Context) -> CNContactPickerViewController {
let controller = CNContactPickerViewController()
controller.delegate = context.coordinator
controller.predicateForEnablingContact = NSPredicate(format: "emailAddresses.@count > 0")
controller.predicateForSelectionOfContact = NSPredicate(format: "emailAddresses.@count == 1")
controller.navigationBar.tintColor = .red
controller.navigationBar.topItem?.title = "Select a Contact"
return controller
}
In this example, weāve added predicates to filter out contacts that donāt have email addresses and to automatically select a contact that has only one email address. Weāve also changed the color of the navigation bar to red and added a title.
Conclusion
The Contacts framework in Swift is a powerful tool that allows you to easily access and manage your usersā contact information. With just a few lines of code, you can create a customized contact picker that fits your appās style and functionality.
Comentarios