VeeContactPicker is an Objective-C replacement for the ABPeoplePickerNavigationController. It lets you choose a contact from the address book.
- Load contacts very fast! Not like the iOS official controller (see this SO question)
- Contacts' images and coloured placeholders with contacts' initials!
- Search contacts also by email addresses or phone numbers!
- Retro compatible with iOS 7
- Handle contacts selection with completion block or delegation
- Choose which contacts you want to show in the picker (e.g only contacts with a valid email address)
- Easy customizable appearance, without needing to subclass it
- Good test coverage
Import the ViewController:
#import "VeeContactPickerViewController.h"
Initialize it and set the delegate:
VeeContactPickerViewController* veeContactPickerViewController = [[VeeContactPickerViewController alloc] initWithDefaultConfiguration];
veeContactPickerViewController.contactPickerDelegate = self;
[self presentViewController:veeContactPickerViewController animated:YES completion:nil];
And then implement the VeeContactPickerDelegate
- (void)didSelectContact:(id<VeeContactProt>)veeContact
{
//Do whatever you want with the selected veeContact!
}
- (void)didCancelContactSelection
{
//No contact was selected
}
- (void)didFailToAccessAddressBook
{
//Show an error?
}
That's all folks!
You can customize some properties of the picker by changing the object VeeContactPickerOptions and pass it to the initializer:
- (instancetype)initWithOptions:(VeeContactPickerOptions*)veeContactPickerOptions;
For example, if you don't like the contacts' initials images as the placeholder, you can set your own placeholder:
VeeContactPickerOptions* veeContactPickerOptions = [VeeContactPickerOptions alloc] initWithDefaultOptions];
veeContactPickerOptions.showInitialsPlaceholder = NO;
veeContactPickerOptions.contactThumbnailImagePlaceholder = [UIImage imageNamed:@"your_placeholder"];
//...
VeeContactPickerViewController* veeContactPickerViewController = [[VeeContactPickerViewController alloc] initWithOptions:veeContactPickerOptions];
//...
Contact's image placeholder are provided by AGCInitials. You can customize the color palette if you want, see the README of AGCInitials.
- If you want to change or localize the strings shown by the picker, look at this property:
veeContactPickerOptions.veeContactPickerStrings
- If you want to choose which contacts to show, you can initialize the picker using:
- (instancetype)initWithVeeContacts:(NSArray<id<VeeContactProt>>*)veeContacts;
Picker Appearance:
You can customize most of the appearance properties of the picker by setting them in the singleton class VeeContactPickerAppearanceConstants, before loading the picker.
For example:
[[VeeContactPickerAppearanceConstants sharedInstance] setNavigationBarTintColor:[UIColor purpleColor]];
[[VeeContactPickerAppearanceConstants sharedInstance] setNavigationBarTranslucent:NO];
[[VeeContactPickerAppearanceConstants sharedInstance] setContactCellPrimaryLabelFont:[UIFont yourFont]];
//...
[self presentViewController:veeContactPickerViewController animated:YES completion:nil];
To run the example project, clone the repo, and run pod install
from the Example directory first.
Or you can even try the example online with Appetize.
- iOS 7+
- At the moment the project is only for iPhone
VeeContactPicker is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "VeeContactPicker"
Andrea Cipriani andrea.g.cipriani@gmail.com - Code Atlas SRL - info@codeatlas.it
VeeContactPicker is available under the MIT license. See the LICENSE file for more info.
VeeContactPicker is already used in the App Store for our app Veer Contacts Widget; if you have appreciated our work, you can download the app for free! 😏