自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iPhone應(yīng)用之通訊錄聯(lián)系人開發(fā)案例

移動(dòng)開發(fā) iOS
本文介紹的是iPhone應(yīng)用中關(guān)于通訊錄聯(lián)系人開發(fā)案例,和通訊錄中聯(lián)系人相關(guān)的應(yīng)用iPhone提供了兩個(gè)框架:AddressBook.framework和AddressBookUI.framework,使用這兩個(gè)框架我們可以在程序中訪問并顯示iPhone數(shù)據(jù)庫中的聯(lián)系人信息。

iPhone應(yīng)用之通訊錄聯(lián)系人開發(fā)案例是本文要介紹的內(nèi)容,主要是來講關(guān)于UITabBarController學(xué)習(xí)筆記,來看詳細(xì)內(nèi)容。和通訊錄聯(lián)系人相關(guān)的應(yīng)用iPhone提供了兩個(gè)框架:AddressBook.framework和AddressBookUI.framework,使用這兩個(gè)框架我們可以在程序中訪問并顯示iPhone數(shù)據(jù)庫中的聯(lián)系人信息。

1.AddressBookUI顯示部分

AddressBookUI中提供了和聯(lián)系人顯示信息相關(guān)的一些Controller,有四個(gè):

ABPeoplePickerNavigationController:顯示整個(gè)通訊錄并可以選擇一個(gè)聯(lián)系人的信息

ABPersonViewController:顯示一個(gè)具體聯(lián)系人的信息

ABNewPersonViewController:增加一個(gè)新的聯(lián)系人

ABUnknownPersonViewController:完善一個(gè)聯(lián)系人的信息

由于其中最主要的是ABPeoplePickerNavigationController,因此就具體的介紹一下通過程序顯示整個(gè)通訊錄并且可以選擇其中某個(gè)聯(lián)系人信息的步驟。

(a)創(chuàng)建并初始化一個(gè)ABPeoplePickerNavigationController對(duì)象

(b)設(shè)置其代理(delegate)

(c)用presentModalViewController:animated:這個(gè)方法進(jìn)行顯示整個(gè)通訊錄頁面

例子:

  1. - (IBAction)showPicker:(id)sender {  
  2.     ABPeoplePickerNavigationController *picker =  
  3.     [[ABPeoplePickerNavigationController alloc] init];  
  4.     picker.peoplePickerDelegate = self;  
  5.     [self presentModalViewController:picker animated:YES];  
  6.    [picker release];  

ABPeoplePickerNavigationControllerDelegate的方法介紹

(1)

  1. peoplePickerNavigationControllerDidCancel: 

當(dāng)用戶選擇取消時(shí)調(diào)用這個(gè)方法,可以在這個(gè)方法里取消整個(gè)通訊錄頁面的顯示。

(2)

  1. peoplePickerNavigationController:shouldContinueAfterSelectingPerson:  

當(dāng)用戶選擇了通訊錄中某一個(gè)聯(lián)系人時(shí)調(diào)用這個(gè)方法,可以在這里獲取聯(lián)系人的信息。如果希望可以繼續(xù)顯示這個(gè)聯(lián)系人更具體的信息,則return YES。否則取消整個(gè)通訊錄頁面的顯示并return NO。

(3)

  1. eoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:  

如果上一個(gè)方法返回的是YES,則會(huì)顯示某一個(gè)聯(lián)系人信息,如果選擇了聯(lián)系人的某一項(xiàng)紀(jì)錄,就會(huì)調(diào)用這個(gè)方法,可以通過點(diǎn)擊選擇聯(lián)系人的某一項(xiàng)信息。如果希望可以對(duì)選擇的某一項(xiàng)紀(jì)錄進(jìn)行進(jìn)一步操作,比如直接撥打電話或調(diào)用郵箱發(fā)送郵件,則return YES。否則取消整個(gè)通訊錄頁面的顯示并return NO。

例子:

  1. - (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {  
  2. // assigning control back to the main controller  
  3. [picker dismissModalViewControllerAnimated:YES];  
  4. }  
  5. - (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker 
  6. shouldContinueAfterSelectingPerson:(ABRecordRef)person {  
  7. //獲取聯(lián)系人姓名  
  8. name.text = (NSString*)ABRecordCopyCompositeName(person);  
  9. //獲取聯(lián)系人電話  
  10. ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);  
  11. NSMutableArray *phones = [[NSMutableArray alloc] init];  
  12. int i;  
  13. for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) {  
  14. NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i) autorelease];  
  15. NSString *aLabel = [(NSString*)ABMultiValueCopyLabelAtIndex(phoneMulti, i) autorelease];  
  16. NSLog(@"PhoneLabel:%@ Phone#:%@",aLabel,aPhone);  
  17. if([aLabel isEqualToString:@"_$!<Mobile>!$_"])  
  18. {  
  19. [phones addObject:aPhone];  
  20. }  
  21. }  
  22. phoneNo.text=@"";  
  23. if([phones count]>0)  
  24. {  
  25. NSString *mobileNo = [phones objectAtIndex:0];  
  26. phoneNo.text = mobileNo;  
  27. //NSLog(mobileNo);  
  28. }  
  29. //獲取聯(lián)系人郵箱  
  30. ABMutableMultiValueRef emailMulti = ABRecordCopyValue(person, kABPersonEmailProperty);  
  31. NSMutableArray *emails = [[NSMutableArray alloc] init];  
  32. for (i = 0;i < ABMultiValueGetCount(emailMulti); i++)  
  33. {  
  34. NSString *emailAdress = [(NSString*)ABMultiValueCopyValueAtIndex(emailMulti, i) autorelease];  
  35. [emails addObject:emailAdress];  
  36. }  
  37. email.text=@"";  
  38. if([emails count]>0)  
  39. {  
  40. NSString *emailFirst=[emails objectAtIndex:0];  
  41. email.text = emailFirst;  
  42. //NSLog(emailFirst);  
  43. }  
  44. [peoplePicker dismissModalViewControllerAnimated:YES];  
  45. return NO;  
  46. }  
  47. - (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker  
  48.  shouldContinueAfterSelectingPerson:(ABRecordRef)person  
  49. property:(ABPropertyID)property  
  50.   identifier:(ABMultiValueIdentifier)identifier{  
  51. return NO;  

2.AddressBook部分

AddressBook框架部分主要是記錄聯(lián)系人的各個(gè)信息,ABRecordRef類型的記錄既可以代表單個(gè)人(kABPersonType),也可以是一個(gè)集合(kABGroupType)。

通訊錄中聯(lián)系人的各個(gè)屬性有兩種形式,單值屬性和多值屬性。單值屬性對(duì)應(yīng)的只有一個(gè)值,比如聯(lián)系人的姓名;多值屬性對(duì)應(yīng)的可能有多個(gè)值,比如聯(lián)系人有多個(gè)電話號(hào)碼等。

(a)常用方法

  1. CFTypeRef ABRecordCopyValue (  
  2.    ABRecordRef record,  
  3.    ABPropertyID property  
  4. ); 

從一個(gè)記錄中獲取某個(gè)屬性對(duì)應(yīng)的值

(b)單值屬性對(duì)應(yīng)的方法

  1. CFStringRef ABRecordCopyCompositeName (  
  2.    ABRecordRef record  
  3. ); 

獲取聯(lián)系人完整的姓名。

(c)多值屬性對(duì)應(yīng)的方法

  1. CFTypeRef ABMultiValueCopyValueAtIndex (  
  2.    ABMultiValueRef multiValue,  
  3.    CFIndex index  
  4. ); 

返回對(duì)應(yīng)位置處的屬性值

  1. CFStringRef ABMultiValueCopyLabelAtIndex (  
  2.    ABMultiValueRef multiValue,  
  3.    CFIndex index  
  4. ); 

返回對(duì)應(yīng)位置處的屬性標(biāo)識(shí)

  1. CFArrayRef ABMultiValueCopyArrayOfAllValues (  
  2.    ABMultiValueRef multiValue  
  3. ); 

返回包含所有屬性值的數(shù)組

  1. CFIndex ABMultiValueGetCount (  
  2.    ABMultiValueRef multiValue  
  3. ); 

返回屬性值的個(gè)數(shù)

例子:

  1. //獲取聯(lián)系人姓名  
  2. name.text = (NSString*)ABRecordCopyCompositeName(person);  
  3. //獲取聯(lián)系人電話  
  4. ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);  
  5. NSMutableArray *phones = [[NSMutableArray alloc] init];  
  6. int i;  
  7. for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) {  
  8. NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i) autorelease];  
  9. NSString *aLabel = [(NSString*)ABMultiValueCopyLabelAtIndex(phoneMulti, i) autorelease];  
  10. NSLog(@"PhoneLabel:%@ Phone#:%@",aLabel,aPhone);  
  11. if([aLabel isEqualToString:@"_$!<Mobile>!$_"])  
  12. {  
  13. [phones addObject:aPhone];  
  14. }  

小結(jié):iPhone應(yīng)用之通訊錄聯(lián)系人開發(fā)案例的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-09-21 14:33:17

點(diǎn)心

2011-10-14 09:42:06

點(diǎn)心通訊錄

2011-08-15 18:02:32

iPhone開發(fā)表視圖

2012-06-05 13:53:03

天天聯(lián)系華為

2011-09-16 14:05:42

Andrioid應(yīng)用iPhone應(yīng)用Symbian應(yīng)用

2022-03-28 06:58:35

微信通訊錄刪除的好友

2009-08-28 17:51:40

iPhone多視圖開發(fā)

2022-01-04 15:34:31

鴻蒙HarmonyOS應(yīng)用

2011-02-24 11:02:06

GoogleFacebookAndroid

2011-11-28 14:37:32

點(diǎn)心通訊錄

2011-12-12 14:41:57

2012-03-01 19:44:18

Android

2021-12-10 10:12:44

鴻蒙HarmonyOS應(yīng)用

2013-09-17 09:51:49

谷歌Bump移動(dòng)應(yīng)用

2011-09-05 14:08:21

微信Andriod安卓

2010-09-26 08:35:01

火種通訊錄

2011-08-11 10:16:23

iPhoneUIView視圖

2011-08-11 10:27:37

iPhoneUIView視圖

2011-08-16 19:02:23

iPhone開發(fā)繪圖

2011-08-10 10:23:20

iPhoneArchivingNSCoder
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)