首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ABPersonViewController不保存更改

ABPersonViewController不保存更改
EN

Stack Overflow用户
提问于 2011-06-30 04:23:38
回答 3查看 1.4K关注 0票数 2

在我正在编写的应用程序中,我允许用户将联系人与事件联系起来。他们可以使用地址簿UI框架添加新的或现有的联系人。

一旦将联系人关联起来,就会显示它们,用户可以单击它们来打开ABPersonViewController。编辑工作正常,但当person视图关闭时,更改将不会保存。

以下是相关代码:

代码语言:javascript
复制
ABPersonViewController *personController = [[ABPersonViewController alloc] init];
personController.personViewDelegate = self;
personController.allowsEditing = YES;
personController.displayedPerson

[self.navigationController pushViewController:personController animated:YES];

[personController release];

编辑联系人并关闭“人员”视图后,如果再次单击“联系人”,则不存在任何已更改的信息。

我尝试创建一个ABAddressBookRef属性,并使用

代码语言:javascript
复制
personController.addressBook = ab;

然后保存地址簿,但也不起作用。

编辑:

我已经实现了<ABPersonViewControllerDelegate>。它只有一个方法,如果我记得正确的话,实现失败会使ABPersonViewController根本无法工作。

以下是我的充分实施:

代码语言:javascript
复制
- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
    return YES;
}

据我所知,这只是意味着控制器将正常运行。

编辑2:

好的,所以我刚刚意识到控制器除了显示他们的名字之外,并没有显示任何关于被选中的人的信息。我认为这意味着我的ABRecordRefs在某种程度上是不正确的。我会调查的。

我将联系人存储为包含记录ID的NSNumbers数组。下面是我的代码(contactID是记录ID的数组,ab是ABAddressBookRef):

代码语言:javascript
复制
NSMutableArray *contactArray = [NSMutableArray array];
for (NSNumber *contactNumber in contactIDs) {
    NSInteger contactID = [contactNumber intValue];
    [contactArray addObject:ABAddressBookGetPersonWithRecordID(ab, contactID)];
}

这看起来很有效,因为当我选择一个联系人时,会加载正确的名称。但是,不显示任何其他信息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-30 06:04:04

我让它起作用了。问题是我使用的是两个不同的ABAddressBookRefs。

我使用一个ABRecordRefs创建了一个ABAddressBookRef数组(在编辑的问题中可以看到),但是当我从数组中读取ABRecordRef时,我使用的ABAddressBookRef已经发布了。

我使ABAddressBookRef实例在整个类实例的整个生命周期中持续存在,并且起了作用。

票数 1
EN

Stack Overflow用户

发布于 2011-06-30 04:48:15

您需要设置所有地址簿委托方法来解决此问题。去这个链接

票数 0
EN

Stack Overflow用户

发布于 2011-06-30 05:05:06

您是如何创建AddressBook的?你用过ABAddressBookCreate()

此外,您应该确保正确地实现ABPersonViewControllerDelegate

请查看这个示例http://developer.apple.com/library/ios/#samplecode/QuickContacts/Introduction/Intro.html

我相信它包含了你所需要的一切!

ABAddressBookSave更新您应该尝试使用方法!

干杯,

汤格

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6529906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档