设为首页 加入收藏

TOP

iOS 学习 - 14.本地联系人(一)
2017-10-13 10:33:16 】 浏览:6999
Tags:iOS 学习 14. 本地 联系人

苹果在iOS9的SDK中废除了AddressBookUI.framework的一些功能(是不是这个库都废除了,有待验证),具体和保存联系人相关的几个系统界面如下:
联系人选择:AddressBookUI/ABPeoplePickerNavigationController.h
联系人详情:AddressBookUI/ABPersonViewController.h
未知联系人:AddressBookUI/ABUnknownPersonViewController.h
新建联系人:AddressBookUI/ABNewPersonViewController.h
新的SDK中使用
联系人选择:ContactsUI/CNContactPickerViewController.h
联系人详情、新建联系人、未知联系人:ContactsUI/CNContactViewController.h(使用不同方法创建,下面会说)

下面的例子,仍存在问题

1.UINavgationController 标题、左右 item 都是系统自带的,联系人详情的时候,navgationItem 的返回按钮无点击事件,应该怎么自定义?

2.联系人 logo 拍照黑屏(真机测试已获取权限),待解决

#import "ViewController.h"
#import <ContactsUI/CNContactPickerViewController.h>
#import <ContactsUI/CNContactViewController.h>
@interface ViewController ()<CNContactViewControllerDelegate,CNContactPickerDelegate>

@end

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)Click:(id)sender { [self set1]; } //保存新联系人
-(void)set{ //1.创建 Contact 对象,必须是可变的
    CNMutableContact *contact = [[CNMutableContact alloc]init]; //2.为 contact 赋值
 [self setValue4Contact:contact existContect:NO]; //3.创建新建好友页面
    CNContactViewController *controller = [CNContactViewController viewControllerForNewContact:contact]; controller.delegate = self; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:controller]; [self presentViewController:nav animated:YES completion:nil]; } //保存现有联系人
-(void)set1{ //跳转到联系人选择页面,注意这里没有使用 UINavgationController
    CNContactPickerViewController *picker = [[CNContactPickerViewController alloc]init]; picker.delegate = self; [self presentViewController:picker animated:YES completion:nil]; } //实现点选的代理,其他代理方法根据自己需求实现
-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{ [picker dismissViewControllerAnimated:YES completion:^{ // copy 一份可写的 contact 对象,不要尝试 alloc 一类,mutableCopy 独此一家
    CNMutableContact *c = [contact mutableCopy]; //为 contact 赋值
 [self setValue4Contact:c existContect:YES]; //跳转到新建联系人页面
    CNContactViewController *controller = [CNContactViewController viewControllerForNewContact:c]; controller.delegate = self; UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:controller]; [self presentViewController:nav animated:YES completion:nil]; }]; } //设置要保存的 contact 对象
- (void)setValue4Contact:(CNMutableContact *)contact existContect:(BOOL)exist{ if (!exist) { //名字和头像
        contact.nickname = @"oriccheng"; /* UIImage *logo = [UIImage imageNamed:@""]; NSData *dataRef = UIImagePNGRepresentation(logo); contact.imageData = dataRef; */ } CNLabeledValue *phoneNumber = [CNLabeledValue labeledValueWithLabel:CNLabelPhoneNumberMobile value:[CNPhoneNumber phoneNumberWithStringValue:@"18888888888"]]; if (!exist) { contact.phoneNumbers = @[phoneNumber]; }else{ //现有联系人情况
        if ([contact.phoneNumbers count] > 0) { NSMutableArray *phoneNumbers = [[NSMutableArray alloc]initWithArray:contact.phoneNumbers]; [phoneNumbers addObject:phoneNumber]; contact.phoneNumbers = phoneNumbers; }else{ contact.phoneNumbers = @[phoneNumber]; } } //网址:CNLabeledValue *url = [CNLabeledValue labeledValueWithLabel:@"" value:@&
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OC NSDictionary 下一篇解决 an app id with identifier ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目