Contacts and ContactsUI 通讯录简单使用一

Hello Contacts,say goodbye Address​Book​!

Contacts.framework 框架针对线程安全的只读使用进行了优化。9.0以上才可以。

contact class 是线程安全的,contact class is like NSDictionary 并且有可变子类CNMutableContact。 you can create your own custom labels. 

不说多,先显示一下 你的通讯录

CNContactPickerViewController  为显示通讯录的ViewController 

CNContactPickerDelegate 为代理 引入Contacts 和ContactsUI

#import

#import

@interface ViewController ()

@end

- (void)viewDidLoad {

    [super viewDidLoad];

简单显示 你的通讯录

CNContactPickerViewController *contactPickerViewController = [[CNContactPickerViewController alloc] init];

    // 设置代理    contactPickerViewController.delegate=self;

    // 显示联系人窗口视图

    [self presentViewController:contactPickerViewController animated:YES completion:nil];

}

当然啦,不能只显示通讯录。 按钮时间都需要代理回调。

 //点击联系人控制器的Cancel按钮执行该方法

- (void)contactPickerDidCancel:(CNContactPickerViewController*)picker{

    NSLog(@"取消");

}

// 选中联系人时执行该方法

- (void)contactPicker:(CNContactPickerViewController*)picker didSelectContact:(CNContact*)contact{

    NSLog(@"联系人的资料:%@",contact);

    [self dismissViewControllerAnimated:YES completion:nil];

  //显示联系人详细页面.  这个页面需要CNContactViewControllerDelegate 代理

  CNContactViewController *contactController = [CNContactViewController viewControllerForNewContact:contact];

    contactController.delegate=self;

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:contactController];

    [self settingNavBarForNavController:navController];

    [self  presentViewController:navController animated:YES completion:nil];

}

//当用户选择属性时调用

- (BOOL)contactViewController:(CNContactViewController*)viewController shouldPerformDefaultActionForContactProperty:(CNContactProperty*)property{

    return NO;

}

//该协议是在创建新的名片界面点击取消或者确定后的回调

- (void)contactViewController:(CNContactViewController*)viewController didCompleteWithContact:(nullableCNContact*)contact{

    [viewControllerdismissViewControllerAnimated:YES completion:nil];

}

你可能感兴趣的:(Contacts and ContactsUI 通讯录简单使用一)