아이 폰 주소록 Address Book.framework 와 Address BookUI.framework 의 응용

주소록 에 연락처 와 관련 된 애플 리 케 이 션 아이 폰 은 주소록.framework 와 주소록 UI.framework 두 프레임 워 크 를 제공 합 니 다.
이 두 프레임 워 크 를 사용 하면 프로그램 에서 아이 폰 데이터베이스 에 있 는 연락처 정 보 를 방문 하고 표시 할 수 있 습 니 다.
1.AddressBookUI 디 스 플레이 부분
AddressBookUI 에 서 는 연락처 표시 정보 와 관련 된 일부 Controller 를 제공 합 니 다.네 가지 가 있 습 니 다.
ABPeople PickerNavigation Controller:전체 주소록 을 표시 하고 연락처 정 보 를 선택 할 수 있 습 니 다.
ABPersonViewController:구체 적 인 연락처 정보 표시
ABNewPersonViewController:새로운 연락처 추가
ABUnknown PersonViewController:연락처 정보 보완
그 중에서 가장 중요 한 것 은 ABPeople PickerNavigation Controller 이기 때문에 프로그램 을 통 해 전체 주소록 을 표시 하고 그 중의 한 연락처 정 보 를 선택 할 수 있 는 절 차 를 구체 적 으로 소개 한다.
(a)ABPeople PickerNavigation Controller 대상 을 만 들 고 초기 화 합 니 다.
(b)프 록 시 설정(delegate)
(c)presentModalViewController:animated:이 방법 으로 전체 주소록 페이지 를 표시 합 니 다.
예:
- (IBAction)showPicker:(id)sender {  
    ABPeoplePickerNavigationController *picker =  
    [[ABPeoplePickerNavigationController alloc] init];  
    picker.peoplePickerDelegate = self;  
    [self presentModalViewController:picker animated:YES];  
   [picker release];  

ABPeople PickerNavigation Controller Delegate 방법 소개
(1)
peoplePickerNavigationControllerDidCancel: 
사용자 가 취 소 를 선택 할 때 이 방법 을 사용 하면 이 방법 에서 전체 주소록 페이지 의 표 시 를 취소 할 수 있 습 니 다.
(2)
peoplePickerNavigationController:shouldContinueAfterSelectingPerson:  
사용자 가 주소록 의 어떤 연락 처 를 선 택 했 을 때 이 방법 을 사용 하면 연락처 의 정 보 를 얻 을 수 있 습 니 다.이 연락처 의 더 구체 적 인 정 보 를 계속 표시 하고 싶다 면 return YES.그렇지 않 으 면 전체 주소록 페이지 의 표 시 를 취소 하고 return NO.
(3)
eoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:  
이전 방법 이 YES 로 되 돌아 오 면 어떤 연락처 정보 가 표 시 됩 니 다.연락처 의 어떤 기록 을 선택 하면 이 방법 을 사용 합 니 다.클릭 을 통 해 연락처 의 특정한 정 보 를 선택 할 수 있 습 니 다.선택 한 기록 에 대해 진일보 한 조작 을 하고 싶다 면,예 를 들 어 직접 전 화 를 하거나 메 일 로 메 일 을 보 내 면 return YES.그렇지 않 으 면 전체 주소록 페이지 의 표 시 를 취소 하고 return NO.
===============================examples=======================================
예:
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {  
// assigning control back to the main controller  
[picker dismissModalViewControllerAnimated:YES];  
}  
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker 
shouldContinueAfterSelectingPerson:(ABRecordRef)person {  
//연락처 이름 가 져 오기 
name.text = (NSString*)ABRecordCopyCompositeName(person);  
//연락처 받 기 
ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);  
NSMutableArray *phones = [[NSMutableArray alloc] init];  
int i;  
for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) {  
NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i) autorelease];  
NSString *aLabel = [(NSString*)ABMultiValueCopyLabelAtIndex(phoneMulti, i) autorelease];  
NSLog(@"PhoneLabel:%@ Phone#:%@",aLabel,aPhone);  
if([aLabel isEqualToString:@"_$!!$_"])  
{  
[phones addObject:aPhone];  
}  
}  
phoneNo.text=@"";  
if([phones count]>0)  
{  
NSString *mobileNo = [phones objectAtIndex:0];  
phoneNo.text = mobileNo;  
//NSLog(mobileNo);  
}  
//연락처 메 일 가 져 오기 
ABMutableMultiValueRef emailMulti = ABRecordCopyValue(person, kABPersonEmailProperty);  
NSMutableArray *emails = [[NSMutableArray alloc] init];  
for (i = 0;i < ABMultiValueGetCount(emailMulti); i++)  
{  
NSString *emailAdress = [(NSString*)ABMultiValueCopyValueAtIndex(emailMulti, i) autorelease];  
[emails addObject:emailAdress];  
}  
email.text=@"";  
if([emails count]>0)  
{  
NSString *emailFirst=[emails objectAtIndex:0];  
email.text = emailFirst;  
//NSLog(emailFirst);  
}  
[peoplePicker dismissModalViewControllerAnimated:YES];  
return NO;  
}  
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker  
 shouldContinueAfterSelectingPerson:(ABRecordRef)person  
property:(ABPropertyID)property  
  identifier:(ABMultiValueIdentifier)identifier{  
return NO;  

좋은 웹페이지 즐겨찾기