我的应用程序允许用户从他们的地址簿中导入联系人并将它们存储在我们的 CardDAV 服务器中。我想让我们的 CardDAV 服务器上的联系人与地址簿(例如 iCloud)中的所有其他链接联系人保持同步。
当使用地址簿的统一联系人 View 编辑联系人时,所有链接的联系人都会更新。我想让我的应用程序的用户在不离开应用程序的情况下执行相同的操作。 ABPersonViewController 是否具有与 native iOS 地址簿相同的功能,使用“统一 View ”更新所有链接的联系人?
Controller 有一个名为 shouldShowLinkedPeople 的属性,但我不确定它实际上做了什么。
最佳答案
我实际上遇到了完全相同的问题,但找不到答案。但后来我看到你提到了属性“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;
否则您将只能编辑其中一个链接的联系人,这可能不是您所希望的。
关于ios - 是否可以使用 ABPersonViewController 从我的 iOS 应用更新链接的联系人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958725/