2

내 응용 프로그램은 사용자가 주소록에서 연락처를 가져 와서 CardDAV 서버에 저장할 수 있습니다. 주소록 (예 : iCloud)의 다른 모든 연결된 연락처가 동기화 된 상태로 CardDAV 서버의 연락처를 유지하고 싶습니다.ABPersonViewController를 사용하여 내 iOS 앱에서 링크 된 연락처를 업데이트 할 수 있습니까?

주소록의 통합 된 연락처보기를 사용하여 연락처를 편집하면 연결된 모든 연락처가 업데이트됩니다. 내 앱 사용자가 앱을 종료하지 않고도 동일한 작업을 수행 할 수있게하고 싶습니다. ABPersonViewController는 "통합보기"를 사용하여 연결된 모든 연락처를 업데이트하기 위해 기본 iOS 주소록과 동일한 기능을합니까?

컨트롤러에는 shouldShowLinkedPeople이라는 속성이 있지만 실제로 무엇을하는지 확신 할 수 없습니다.

답변

1

실제로 똑같은 문제가 있었으며 답을 찾을 수 없습니다. 하지만 그때 당신은 "shouldShowLinkedPeople"속성에 대해 언급 한 것을 보았습니다. 그것은 바로 솔루션입니다! 속성을 YES로 설정하면 ABPersonViewController의 모든 연결된 연락처를보고 편집 할 수 있습니다.

#import <UIKit/UIKit.h> 
#import <AddressBook/AddressBook.h> 
#import <AddressBookUI/AddressBookUI.h> 

@interface ContactsViewController : ABPeoplePickerNavigationController <ABPeoplePickerNavigationControllerDelegate> 

@end 

당신이/편집을 볼 수있는 방법을 구현 다음 ABPeoplePickerNavigationControllerDelegate을 준수 ABPeoplePickerNavigationController의 내 서브 클래스에서

: 여기

내가 무슨 짓을했는지 (내 응용 프로그램은 ABPeoplePickerNavigationController의 활용)

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
     shouldContinueAfterSelectingPerson:(ABRecordRef)person 
{ 
    ABPersonViewController *contactDetailViewController = [[ABPersonViewController alloc] init]; 
    contactDetailViewController.shouldShowLinkedPeople = YES; 
    contactDetailViewController.displayedPerson = person; 
    contactDetailViewController.allowsEditing = YES; 

    [self pushViewController:contactDetailViewController 
        animated:YES]; 

    return NO; 
} 
에있는 연락처를 클릭하여 ABPersonViewController를 통한 연락처 하는 수, 그렇지 않으면

contactDetailViewController.shouldShowLinkedPeople = YES; 

경우에만 연결된 연락처 중 하나를 수정할 수 있습니다 : (페이스 북, 아이 클라우드 등을 예를 들어) 링크 된 연락처를 편집하려면3210

, 당신은 라인을 포함해야 바람직하지 않다.

관련 문제