美文网首页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