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

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部分完整工程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值