美文网首页iOS奋斗ios实用开发技巧iOS学习
iOS通讯录联系人增加和编辑

iOS通讯录联系人增加和编辑

作者: 凯文Kevin21 | 来源:发表于2017-03-09 09:58 被阅读1190次
  • 一、iOS通讯录添加联系人,是调用到系统页面。

  1. 导入#import <AddressBookUI/ABNewPersonViewController.h>框架。
  2. 遵守协议ABNewPersonViewControllerDelegate代理。
  3. 设置rightItem:
 UIBarButtonItem *rightBBItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(Addcontacts:)];
    self.navigationItem.rightBarButtonItem = rightBBItem;
  1. 具体联系人增加代码如下:
//iOS9.0以下 
ABNewPersonViewController  *picker = [[ABNewPersonViewController alloc]init];
        picker.newPersonViewDelegate = self;
        
        UINavigationController  *navigation = [[UINavigationController alloc]initWithRootViewController:picker];
        [self presentViewController:navigation animated:YES completion:^{
            //刷新UI
        }];
  • 设置了代理,实现协议方法
#pragma mark - ABNewPersonViewControllerDelegate
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(nullable ABRecordRef)person{
    [newPersonView dismissViewControllerAnimated:YES completion:nil];
}

二、通讯录联系人编辑
自定义的通讯录联系人列表,选中某一行联系人进行编辑。

  1. 导入#import <AddressBookUI/ABNewPersonViewController.h>框架。
  2. 遵守协议ABNewPersonViewControllerDelegate代理。
  3. 设置rightItem:
 //编辑联系人
    UIBarButtonItem  *rightBBItem = [[UIBarButtonItem alloc]initWithTitle:@"编辑" style:UIBarButtonItemStylePlain target:self action:@selector(EditClicked:)];
    self.navigationItem.rightBarButtonItem = rightBBItem;
  1. 具体联系人编辑 的代码如下:
#pragma mark -  编辑联系人
-(void)EditClicked{
            ABNewPersonViewController  *picker = [[ABNewPersonViewController alloc]init];
          ABAddressBookRef   adressBook = ABAddressBookCreate();
        ABRecordID  recordID = _model.recordID;   //关键代码1
        picker.displayedPerson = ABAddressBookGetPersonWithRecordID(adressBook, recordID); //关键代码2
            picker.newPersonViewDelegate = self;
            UINavigationController  *navigation = [[UINavigationController alloc]initWithRootViewController:picker];
            [self presentViewController:navigation animated:YES completion:^{
                //刷新UI,
            }];
}

5.遵守协议,实现代理方法

#pragma mark - ABNewPersonViewControllerDelegate
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(nullable ABRecordRef)person{
    [newPersonView dismissViewControllerAnimated:YES completion:nil];
}

三、 增加联系人和编辑联系人区别:

  • 编辑联系人是在增加联系人的基础上做修改的, 增加了下面3行代码,其他的遵守的代理以及实现的协议方法都完全一样.
 ABAddressBookRef   adressBook = ABAddressBookCreate(); 
        ABRecordID  recordID = _model.recordID;    //每个联系人的标识
        picker.displayedPerson = ABAddressBookGetPersonWithRecordID(adressBook, recordID); 

相关文章

网友评论

  • 得得得得得儿:_model.recordID 这个是怎么获取的?iOS9以上的方法有吗?
    凯文Kevin21:你可以看一下我的上一篇文章 http://www.jianshu.com/p/85bf71fd90d7 里面的Usermodel就是这个 model.
    凯文Kevin21:model 是一个用来存储联系人电话,姓名,ABRecordID recordID,等信息的一个容器。

本文标题:iOS通讯录联系人增加和编辑

本文链接:https://www.haomeiwen.com/subject/slcwgttx.html