我想通过向设备地址簿添加新记录(基本上是将私人联系人列表与设备AB合并)来在iPhone上创建定制地址簿。那么我想,让用户选择一个联系人,我以为我可以用ABPeoplePickerNavigationController
的.addressbook
物业办:在iPhone上为ABPeoplePickerNavigationController定制地址簿
ABAddressBookRef contacts = ABAddressBookCreate();
for (PrivateUserType *user in rosterItems)
{
CFErrorRef err = NULL;
ABRecordRef ref = ABPersonCreate();
ABRecordSetValue(ref, kABPersonLastNameProperty, (CFStringRef)user.lastName, &err);
if (err != NULL)
{
NSString *errorStr = [(NSString *)CFErrorCopyDescription(err) autorelease];
NSLog(@"Can not set name: %@", errorStr);
}
...
ABAddressBookAddRecord(contacts, ref, &err);
if (err != NULL)
{
NSString *errorStr = [(NSString *)CFErrorCopyDescription(err) autorelease];
NSLog(@"Error adding XMPP roster user to addressbook: %@", errorStr);
}
}
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.addressBook = contacts;
[viewController presentModalViewController:picker animated:YES];
[picker release];
的条目成功添加到地址簿(其中,如果我做了一个ABAddressBookSave()
后,我可以验证循环添加一切)。但是,条目不会被picker
显示(除非我保存联系人,这当然会将所有更改保存到设备地址簿中)。
有没有办法做到这一点?这是在iOS 4.3.1上。
谢谢!
感谢您的回答。我几乎认为是这种情况,但希望有其他事情。呃,好吧。谢谢.. – 2011-04-13 21:26:07