私は実際にまったく同じ問題を抱えていて、答えを見つけることができませんでした。しかし、その後、あなたが「shouldShowLinkedPeople」というプロパティに言及しているのを見ました。それがまさに解決策です! プロパティを YES に設定するだけで、リンクされたすべての連絡先を ABPersonViewController で表示および編集できるようになります。
これが私がやったことです(私のアプリはABPeoplePickerNavigationControllerを利用しています):
ABPeoplePickerNavigationControllerDelegate に準拠する ABPeoplePickerNavigationController のサブクラス:
#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
@interface ContactsViewController : ABPeoplePickerNavigationController <ABPeoplePickerNavigationControllerDelegate>
@end
ABPeoplePickerNavigationController で連絡先をクリックして、ABPersonViewController を介して連絡先を表示/編集できるメソッドを実装します。
- (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;
}
リンクされている連絡先 (Facebook、iCloud など) を編集するには、次の行を含める必要があります。
contactDetailViewController.shouldShowLinkedPeople = YES;
そうしないと、リンクされた連絡先の 1 つしか編集できなくなり、望ましくない場合があります。