ios - 是否可以使用 ABPersonViewController 从我的 iOS 应用更新链接的联系人?

标签 ios abaddressbook abpersonviewcontroller addressbookui carddav

我的应用程序允许用户从他们的地址簿中导入联系人并将它们存储在我们的 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/

相关文章:

ios - 如何循环 NSString N 次?

ios - 调用核心数据操作时崩溃并显示 "failed to scene-update in time"消息

cocoa - 在共享 CardDAV(10.6/服务器托管)地址簿中创建 ABPerson 记录

objective-c - 模态中的 ABPersonViewController

ios - 我可以在不使用 "undocumented api"的情况下为 UnknownPersonViewController 创建自定义 Nib 吗?

iphone - 使用 ROOT 权限获取 GPS,无需警报 View (越狱)

ios - 如何延迟或减慢 View Controller 之间的转换?

objective-c - 自定义 iOS 通讯录。需要有关数据结构和性能的建议

objective-c - 为什么这种类型转换不适用于自身?