iOS开发学习001_01:Address Book 01 显示通讯录中某人姓名、电话

来源:互联网 发布:软件过程的概念 编辑:程序博客网 时间:2024/04/30 02:24

Address Book主要是用于获取用户通讯录信息。有关的framework主要是Address Book UI和Address Book。

以下将先通过几个例子对其进行介绍,再进行查漏补缺。

先来做个快速了解,创建一个简单app,选取用户通讯录中某个人,并显示其姓名及电话。


1、创建工程,导入Address Book UI、Address Book frameworks.


2、打开storyboard,添加一个button和两个labels


功能:点击button,跳转到通讯录,选取某人,显示其firstName和phoneNumber。

3、链接button、labels和view controller

FPViewController.h

////  FPViewController.h//  Address Book////  Created by Emma on 15/5/21.//  Copyright (c) 2015年 Emma. All rights reserved.//#import <UIKit/UIKit.h>#import <AddressBookUI/AddressBookUI.h>@interface FPViewController : UIViewController<ABPeoplePickerNavigationControllerDelegate>//labels@property (weak, nonatomic) IBOutlet UILabel *fristName;@property (weak, nonatomic) IBOutlet UILabel *phoneNumber;//button Action- (IBAction)showPicker:(id)sender;@end
注意添加ABPeoplePickerNavigationControllerDelegate协议。

4、button动作的实现

#pragma mark - Action//打开通讯录- (IBAction)showPicker:(id)sender{    //通讯录controller    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];        picker.peoplePickerDelegate = self;    //显示通讯录    [self presentViewController:picker animated:YES completion:nil];}
5、在delegate中实现对用户动作的回应

//当点击cancel时触发- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker{    [self dismissViewControllerAnimated:YES completion:nil];}//iOS8接口更新//Called after a person has been selected by the user.当某人被用户选中时触发,iOS8新接口- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person{    [self displayPerson:person];    [self dismissViewControllerAnimated:YES completion:nil];}//iOS8前接口//Sent when the user selects a contact.当某人被用户选中时触发,iOS8前接口- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{    [self displayPerson:person];    [self dismissViewControllerAnimated:YES completion:nil];    return NO;}//Sent when the user selects one of a person’s properties.当用户选取了某人的某一属性时触发- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{    return NO;}//显示被选中人得信息- (void)displayPerson:(ABRecordRef)person{    //_bridge_transfer将Core Foundation框架数据类型对象转换为Foundation框架数据类型对象,且将对象的所有权交给ARC管理    //显示名字,property为kABPersonFirstNameProperty    NSString* name = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);        self.fristName.text = name;        //显示号码,property为kABPersonPhoneProperty    NSString* phone = nil;    ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);    //选取首个号码    if (ABMultiValueGetCount(phoneNumbers) > 0)    {        phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);    }    else    {        phone = @"[NONE]";    }    self.phoneNumber.text = phone;    CFRelease(phoneNumbers);}

参考:

apple官方文档Address Book_Quick Start Tutorial.


Address Book部分所有文章:


Address Book部分完整工程:

0 0