我的应用允许用户从地址簿导入联系人并将其存储在我们的CardDAV服务器中。我想保持我们的CardDAV服务器上的联系人与地址簿中的所有其他链接的联系人(例如iCloud)保持同步。
使用地址簿的统一联系人视图编辑联系人时,将更新所有链接的联系人。我想让我的应用程序的用户在不离开应用程序的情况下也能这样做。 ABPersonViewController是否具有与本机iOS通讯簿相同的功能,以使用“统一视图”更新所有链接的联系人?
控制器有一个名为shouldShowLinkedPeople的属性,但我不确定它实际上是做什么的。
答案 0 :(得分:1)
我实际上遇到了同样的问题但找不到答案。但后来我看到你提到了属性“shouldShowLinkedPeople”,这正是解决方案!您所要做的就是将属性设置为YES,您将能够在ABPersonViewController中查看和编辑所有链接的联系人。
这就是我所做的(我的应用程序利用了ABPeoplePickerNavigationController):
在我的ABPeoplePickerNavigationController的子类中,它符合ABPeoplePickerNavigationControllerDelegate:
#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;
否则,您将只能编辑其中一个链接的联系人,这可能是不受欢迎的。