Я использую ABPeoplePickerNavigationController
для таблицы представлений контактов. При нажатии на контакт мне нужно установить для него новое изображение. Я добавил код для делегирования для изменения данных человека, но не могу изменить изображение. Какие-либо предложения?Установить изображение для контакта iOS
Это мой код ниже:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
NSData *dataRef = UIImagePNGRepresentation(self.theImage);
CFDataRef cfdata = CFDataCreate(NULL, [dataRef bytes], [dataRef length]);
CFErrorRef error;
ABPersonRemoveImageData(person, &error); // clean any image first from ref
if (ABAddressBookSave(_addressBook, &error))
{
ABPersonSetImageData(person, cfdata, &error);
ABAddressBookSave(_addressBook, &error);
}
CFRelease(cfdata);
[self dismissViewControllerAnimated:YES completion:nil];
return NO;
}
Скачал образец здесь: link
Чтобы проверить, как это работает, Вы можете скачать код и изменить делегат ниже с моим кодом.
благодарит за комментарии Я обновил свой вопрос кодом с учетом ваших комментариев, но я до сих пор не вижу, что изображение появляется в моем контакте. Я проверил cfdata, person, _addressBook, все они имеют значение –
. Я добавил ссылку на источники, откуда я ее загрузил. –
Я думаю, что использовал другую адресную книгу. Я получаю экземпляр адресной книги от ABPeoplePickerNavigationController, и он работает хорошо. благодаря –