Установить изображение адресной книги iOS в UITableViewCell - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь интегрировать API AddressBookUI в мое приложение iOS 5 для отображения выбранного содержимого в виде таблицы. Мне удалось реализовать средство выбора адресной книги и настроить его таким образом, чтобы, когда пользователь выбирает человека из своей адресной книги, он заполнял метку ячейки в TableView. Я также хотел бы, чтобы он мог отображать изображение выбранного человека в той же ячейке, если оно существует, и изображение отсутствующего изображения по умолчанию, если его нет.

Я не могу понять, как сохранить имя и данные изображения в одной ячейке TableView.

У кого-нибудь есть предложения, как мне этого добиться. Я прочитал документы для разработчиков и знаю, что должен использовать команду ABPersonCopyImageDataWithFormat. Я просто не могу заставить его внедрить его в ячейку таблицы.

Вот фрагменты кода, который у меня есть:

// Store the name into memory when the user selects, then dismiss the view.
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{

    NSString *selectedPerson = (__bridge NSString *)ABRecordCopyCompositeName(person);


    [people insertObject:selectedPerson atIndex:0];

    if (ABPersonHasImageData(person) == TRUE) {
        NSLog(@"Person has an image!");
    } else {
        NSLog(@"Person does not have an image.");
    }

    [self dismissModalViewControllerAnimated:YES];

    [self.tableView reloadData];

    return NO;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    PartyCell *cell = (PartyCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell"];
    cell.backgroundView = [[GradientView alloc] init];

    cell.personLabel.text = [people objectAtIndex:indexPath.row];
    cell.personImage.image = [UIImage imageNamed:@"missing.png"]; // THIS NEEDS TO DISPLAY THE SELECTED USERS PICTURE. CURRENTLY SHOWS A DEFAULT USER.

    return cell;
}

Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Нашел простое решение: каждый раз сохраняйте изображение выбранного контакта в новом NSMutableArray с индексом 0.

UIImage *image =[UIImage imageWithData:(__bridge NSData *)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail)];

        [peopleImage insertObject:image atIndex:0];

Изображения можно затем загрузить как обычно в ячейку, вызвав массив в UITabelView

cell.personImage.image = [peopleImage objectAtIndex:indexPath.row];
0 голосов
/ 04 января 2012

Во-первых, вы получаете UIImage от ABRecordRef:

[UIImage imageWithData:(NSData *)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail)];

Затем вы можете установить изображение imageView UITableViewCell как:

[[cell imageView] setImage: image];

Соедините другие ссылки, которые могут помочь вам:

http://www.chrisdanielson.com/tag/uitableviewcell/

http://goddess -gate.com / dc2 / index.php / post / 421

...